Wie kann ich Ant-Ziele zwischen Projekten am besten teilen?

Gibt es einen gut etablierten Weg zum Teilen?Ameise Ziele zwischen Projekten? Ich habe derzeit eine Lösung, aber sie ist etwas unelegant. Folgendes mache ich bisher.

Ich habe eine Datei namensivy-tasks.xml auf einem Server in unserem Netzwerk gehostet. Diese Datei enthält unter anderem Boilerplate-Tasks zum Verwalten von Projektabhängigkeiten mitEfeu. 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, warum diese Datei gehostet wird, ist, weil ichnicht möchte:

Checken Sie die Datei in jedes Projekt ein, das sie benötigt - dies führt zu Duplikaten und erschwert die Wartung der Ziele.Habe meine build.xml vom Auschecken eines Projekts aus der Quellcodeverwaltung abhängig gemacht - dadurch verfügt der Build über mehr XML auf der obersten Ebene, nur um auf die Datei zuzugreifen.

Was ich mit dieser Datei in der build.xml meiner Projekte mache, ist in etwa wie folgt:

<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"/>

Der "schmutzige" Teil dabei ist, dass ich die obigen Schritte ausführen mussaußerhalb eines Ziels, weil derAufgabe importieren muss auf der obersten Ebene sein. Außerdem muss ich diese XML-Datei immer noch in alle build.xml-Dateien aufnehmen, die sie benötigen (d. H. Es gibt immer noch ein gewisses Maß an Duplizierung).

Darüber hinaus kann es weitere Situationen geben, in denen ich möglicherweise allgemeine (Nicht-Efeu) Aufgaben habe, die ich importieren möchte. Wenn ich diese Aufgaben mit dem Abhängigkeitsmanagement von Ivy ausführen würde, hätte ich immer noch Probleme, da ich mich zum Zeitpunkt der Auflösung der Abhängigkeiten innerhalb eines Ziels in meiner build.xml befinden und nicht in der Lage sein müsste (fällig), zu importieren auf die oben genannte Einschränkung).

Gibt es eine bessere Lösung für das, was ich erreichen möchte?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage