Apache Ivy Abhängigkeiten auflösen mit dem Eclipse-workspace, die während Ant-build
Ich bin mit Apache Ivy mit Eclipse (IvyDE) und versucht zu lösen das folgende Problem. Ich habe zwei Projekte, IvyParent und IvyChild, wo das Kind richtet sich auf die Muttergesellschaft. Ich habe die option gewählt für Eclipse-Ivy-Classpath-Container "Abhängigkeiten Auflösen in workspace".
Den Eclipse-autobuilder-funktioniert Super - ich bekomme alle meine Ivy Abhängigkeiten heruntergeladen und eingebunden. Ich habe sowohl die Eltern-und Kind-Projekte öffnen und ich kann machen Echtzeit-änderungen an der übergeordneten und finden Sie die Zusammenstellung Veränderungen in das Kind.
Das problem ist, wenn ich versuche, mit Ant zu bauen, die Kind-Projekt in ein jar. Meine Frage ist, wie kann ich Sie nutzen den Arbeitsbereich resolver während eine explizite Ant-build?
Ist, habe ich mich in die Ivy-Dateisystem Resolver, aber was ich versuche zu vermeiden, dass Ant Wiederaufbau des übergeordneten Projekts ausdrücklich vor Ant Gebäude das Kind.
Die Fehler, die ich erhalte ist folgende:
[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
Hier ist das übergeordnete Projekt 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>
Hier ist die Kind-Projekt 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>
Hier ist das Kind 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>
InformationsquelleAutor earthbounce | 2013-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein resolver-und publishing-problem. Ihr bauen für Ihre ParentModule muss 'veröffentlichen' jar in einem bestimmten Verzeichnis. Dann wird Ihr Kind Modul bauen sollte mit einer Auflösung, die finden diese bestimmten Verzeichnis.
Also.. zum Beispiel, ivy_settings Aussehen könnte:
und Ihre build.xml Dateien sollten
Was hier passiert ist, die wir erzählen Efeu über ein Verzeichnis (...../repository) für die lokal erstellen von jar-Dateien.
Also Ihre Eltern bauen, jetzt hat es build.xml ein "veröffentlichen" - Ziel:
Also.. laufen, und bestätigen Sie Ihre ParentModule.jar die Datei wird in das repository-Verzeichnis.
Dort angekommen, ist Ihr Kind Modul sollte in der Lage sein, zu 'lösen' Ihre übergeordneten Modul-jar-Datei.
InformationsquelleAutor ticktock