¿Cómo puedo compartir los objetivos de Ant entre proyectos?

¿Hay una manera bien establecida de compartirHormiga objetivos entre proyectos? Tengo una solución actualmente, pero es un poco poco elegante. Esto es lo que estoy haciendo hasta ahora.

Tengo un archivo llamadoivy-tasks.xml alojado en un servidor en nuestra red. Este archivo contiene, entre otros objetivos, tareas programadas para la gestión de dependencias de proyectos conHiedra. Por ejemplo:

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

La razón por la que este archivo está alojado es porqueno hacer querer:

Verifique el archivo en cada proyecto que lo necesite; esto resultará en una duplicación, lo que dificultará el mantenimiento de los objetivos.Haga que mi build.xml dependa de retirar un proyecto del control de origen; esto hará que la compilación tenga más XML en el nivel superior solo para acceder al archivo.

Lo que hago con este archivo en el build.xmls de mis proyectos es el siguiente:

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

La parte "sucia" de esto es que tengo que hacer los pasos anterioresfuera de un objetivo, porque eltarea de importación debe estar en el nivel superior. Además, todavía tengo que incluir este XML en todos los archivos build.xml que lo necesitan (es decir, todavía hay cierta cantidad de duplicación).

Además de eso, puede haber situaciones adicionales en las que pueda tener tareas comunes (que no sean de Ivy) que me gustaría importar. Si tuviera que realizar estas tareas utilizando la gestión de dependencias de Ivy, todavía tendría problemas, ya que para cuando hubiera resuelto las dependencias tendría que estar dentro de un destino en mi build.xml y no podría importar (debido a la restricción mencionada anteriormente).

¿Hay una solución mejor para lo que estoy tratando de lograr?

Respuestas a la pregunta(4)

Su respuesta a la pregunta