Apache Ivy résoudre des dépendances à l'aide d'Eclipse espace de travail au cours Ant
Je suis en utilisant Apache Ivy avec Eclipse (IvyDE) et d'essayer de résoudre le problème suivant. J'ai deux projets, IvyParent et IvyChild, où l'enfant dépend du parent. J'ai l'option sélectionnée pour Eclipse Ivy Classpath Conteneur pour "Résoudre les dépendances dans l'espace de travail".
L'Éclipse de serveurs d'empaquetage automatique fonctionne très bien - je obtenir tout mes Ivy dépendances téléchargé et inclus. J'ai à la fois le parent et l'enfant projets ouverts, et je peux faire en temps réel des modifications de la mère et de voir la compilation des changements dans l'enfant.
Le problème est que lorsque j'essaie d'utiliser Ant pour construire le projet enfant dans un bocal. Ma question est, comment puis-je tirer parti de l'espace de travail de résolution au cours d'une explicite Ant?
J'ai regardé dans le Lierre système de fichiers résolveurs, mais ce que j'essaie d'éviter d'avoir à Ant reconstruire le projet parent explicitement avant Ant la construction de l'enfant.
L'erreur que j'obtiens est le suivant:
[ivy:retrieve] :: problems summary ::
[ivy:retrieve] :::: WARNINGS
[ivy:retrieve] module not found: org.example#ParentModule;latest.integration
[ivy:retrieve] ==== local: tried
[ivy:retrieve] ...
[ivy:retrieve] ==== shared: tried
[ivy:retrieve] ...
[ivy:retrieve] ==== public: tried
[ivy:retrieve] ...
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: UNRESOLVED DEPENDENCIES ::
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: org.example#ParentModule;latest.integration: not found
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
BUILD FAILED
C:\Users\user\workspace\IvyExampleChild\build.xml:15: impossible to resolve dependencies:
resolve failed - see output for details
Ici est le projet parent ivy.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="org.example" module="ParentModule" status="integration" />
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.6"/>
</dependencies>
</ivy-module>
Ici, est l'enfant du projet ivy.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="org.example" module="ChildModule" status="integration" />
<dependencies>
<dependency org="org.example" name="ParentModule" rev="latest.integration"/>
</dependencies>
</ivy-module>
Ici est l'enfant build.xml:
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="ChildModule" default="release">
<property name="build.dir" value="build" />
<property name="build.dir.classes" value="${build.dir}/classes" />
<property name="src.dir" value="src" />
<property name="output.jar" value="${build.dir}/${ant.project.name}.jar" />
<target name="clean">
<delete includeemptydirs="true" quiet="true">
<fileset dir="${build.dir}" />
</delete>
</target>
<target name="apache-ivy" depends="clean">
<ivy:retrieve />
<ivy:cachepath pathid="ivy.build.path" conf="default" />
</target>
<target name="release" depends="apache-ivy">
<echo message="compiling ${src.dir}..." />
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dir.classes}" />
<javac srcdir="${src.dir}" destdir="${build.dir.classes}" classpathref="ivy.build.path"/>
<jar destfile="${output.jar}" basedir="${build.dir}"/>
</target>
</project>
OriginalL'auteur earthbounce | 2013-03-22
Vous devez vous connecter pour publier un commentaire.
C'est un résolveur et le problème de publication. Votre construire pour votre ParentModule besoin de "publier" son bocal à un répertoire spécifique. Ensuite, votre enfant module de construire devrait être l'aide d'un solveur qui peut trouver ce répertoire spécifique.
Donc.. par exemple, ivy_settings pourrait ressembler à:
et votre build.xml les fichiers doivent avoir
Ce qui se passe ici est que nous sommes en disant lierre sur un répertoire (...../référentiel) pour la localement construire des fichiers jar.
De sorte que votre parent construire aujourd'hui c'est build.xml un "publier" cible:
Donc.. fonctionner et confirmez votre ParentModule.jar fichier s'affiche dans votre répertoire de dépôt.
Une fois sur place, votre enfant module doit être en mesure de "résoudre" de votre module parent fichier jar.
OriginalL'auteur ticktock