Gibt es eine gut etablierte Möglichkeit, Ant Ziele zwischen Projekten zu teilen? Ich habe derzeit eine Lösung, aber es ist ein wenig unelegant. Hier ist, was ich bis jetzt mache.Wie kann ich Ant-Ziele am besten zwischen Projekten teilen?
Ich habe eine Datei namens ivy-tasks.xml
gehostet auf einem Server in unserem Netzwerk. Diese Datei enthält unter anderem Vorlagen für die Verwaltung von Projektabhängigkeiten mit Ivy. Zum Beispiel:
<project name="ant-ivy-tasks" default="init-ivy"
xmlns:ivy="antlib:org.apache.ivy.ant">
...
<target name="ivy-download" unless="skip.ivy.download">
<mkdir dir="${ivy.jar.dir}"/>
<echo message="Installing ivy..."/>
<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
dest="${ivy.jar.file}" usetimestamp="true"/>
</target>
<target name="ivy-init" depends="ivy-download"
description="-> Defines ivy tasks and loads global settings">
<path id="ivy.lib.path">
<fileset dir="${ivy.jar.dir}" includes="*.jar"/>
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant"
classpathref="ivy.lib.path"/>
<ivy:settings url="http://myserver/ivy/settings/ivysettings-user.xml"/>
</target>
...
</project>
Der Grund dieser Datei gehostet wird, weil ich nicht wollen:
- die Datei in jedem Projekt prüfen, die es braucht - dies Duplizierung führen, so dass die Ziele härter halten.
- Lassen Sie meine build.xml davon abhängen, ein Projekt aus der Quellcodeverwaltung auschecken - dies wird die Erstellung mehr XML auf der obersten Ebene haben, nur um auf die Datei zuzugreifen.
Was ich mit dieser Datei tun build.xmls in meinen Projekten ist entlang der Linien von:
<property name="download.dir" location="download"/>
<mkdir dir="${download.dir}"/>
<echo message="Downloading import files to ${download.dir}"/>
<get src="http://myserver/ivy/ivy-tasks.xml" dest="${download.dir}/ivy-tasks.xml" usetimestamp="true"/>
<import file="${download.dir}/ivy-tasks.xml"/>
Das ‚schmutzige‘ daran ist, dass ich die obigen Schritte zu tun haben außerhalb eines Ziels, weil die import task auf der obersten Ebene sein muss. Außerdem muss ich dieses XML in alle build.xml-Dateien aufnehmen, die es benötigen (d. H. Es gibt immer noch eine gewisse Menge an Duplizierung).
Darüber hinaus könnte es weitere Situationen geben, in denen ich allgemeine (nicht-Ivy) Aufgaben haben könnte, die ich importiert haben möchte. Wenn ich diese Aufgaben mit Ivys Abhängigkeitsverwaltung ausführen würde, hätte ich immer noch Probleme, da ich die Abhängigkeiten aufgelöst hätte, wenn ich mich in einem Ziel in meiner build.xml befände und nicht importieren könnte (fällig zu der oben genannten Einschränkung).
Gibt es eine bessere Lösung für das, was ich erreichen möchte?
hatte ich die gleichen Schwierigkeiten. Ich habe einfach viel kopiert und eingefügt :). –