Как я могу наилучшим образом разделить цели Ant между проектами?

Есть ли устоявшийся способ поделитьсяМуравей цели между проектами? В настоящее время у меня есть решение, но оно немного не элегантно. Вот что я делаю до сих пор.

У меня есть файл с именемivy-tasks.xml размещены на сервере в нашей сети. Этот файл содержит, среди прочих целей, типовые задачи для управления зависимостями проекта с помощьюплющ, Например:

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

Причина того, что этот файл находится в том, что яне хочу:

Проверьте файл в каждом проекте, который нуждается в этом - это приведет к дублированию, что усложнит поддержание целей.Мой build.xml зависит от извлечения проекта из системы контроля версий - это позволит сборке иметь больше XML на верхнем уровне только для доступа к файлу.

То, что я делаю с этим файлом в build.xmls моих проектов, выглядит следующим образом:

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

«Грязная» часть об этом заключается в том, что я должен сделать вышеуказанные шагивне цели, посколькузадача импорта должен быть на высшем уровне. Кроме того, мне все еще нужно включить этот XML во все файлы build.xml, которые в нем нуждаются (т.е. все еще есть некоторое количество дубликатов).

Кроме того, могут быть дополнительные ситуации, когда у меня могут быть общие (не плющевые) задачи, которые я хотел бы импортировать. Если бы я выполнял эти задачи с помощью управления зависимостями Айви, у меня все равно были бы проблемы, поскольку к тому времени, как я бы разрешил зависимости, я должен был бы быть внутри цели в моем build.xml и не мог импортировать (из-за с ограничением, упомянутым выше).

Есть ли лучшее решение для того, чего я пытаюсь достичь?

Ответы на вопрос(4)

Ваш ответ на вопрос