Передайте цель ant нескольким файлам build.xml в подкаталогах

StackOverflow https://stackoverflow.com/questions/819568

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть проект с несколькими модулями, каждый в своем каталоге. Каждый модуль имеет свой собственный файл сборки 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>

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

Это было полезно?

Решение

Почему бы не использовать 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' (я бы тоже переименовал это!)

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top