Передайте цель ant нескольким файлам build.xml в подкаталогах - PullRequest
7 голосов
/ 04 мая 2009

У меня есть проект с несколькими модулями, каждый в своем каталоге. Каждый модуль имеет свой собственный файл сборки ant (build.xml)

В корневом каталоге я настроил общий файл сборки, который вызывает файл сборки каждого модуля в правильном порядке.

<?xml version="1.0"?>
<project name="bridgedb" default="all" basedir=".">
  <target name="all">
    <ant dir="corelib"/>
    <ant dir="tools"/>
    <ant dir="makeGdb"/>
    <ant dir="cytoscape-plugin"/>
  </target>
</project>

Теперь у каждого модуля также есть «чистая» цель, поэтому я добавляю следующие строки:

 <target name="clean">
    <ant dir="corelib" target="clean"/>
    <ant dir="tools" target="clean"/>
    <ant dir="makeGdb" target="clean"/>
    <ant dir="cytoscape-plugin" target="clean"/>
  </target>

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

Ответы [ 2 ]

7 голосов
/ 04 мая 2009

Почему бы не использовать antcall для вызова цели, которая ссылается на все ваши подкаталоги, и параметризации цели, которая будет вызвана. например,

 <antcall target="doStuffToSubdirs">
    <!-- let's clean -->
    <param name="param1" value="clean"/>
  </antcall>

и затем:

<target name="doStuffToSubdirs">
   <ant dir="corelib" target="${param1}"/>
   <ant dir="tools" target="${param1}"/>
    ...etc
</target>

, так что это позволяет вам параметризировать вызовы к вашим подчиненным. Если вы добавляете новый subdir, вам нужно только добавить этот subdir в цель doStuffToSubdirs (я бы тоже переименовал!)

2 голосов
/ 04 мая 2009

Поместите одну чистую цель в ваш commonbuild.xml, а в дочерние файлы просто импортируйте ваш родительский build.xml

<import file="${parent.dir}/commonbuild.xml" />

Теперь вы сможете вызывать чистую цель в ваших детских билдах. Вы также можете переопределить эту цель, создав чистую цель в любой из ваших дочерних сборок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...