【发布时间】:2017-02-10 18:37:03
【问题描述】:
我正在为一个有几个依赖项的项目编写一个 ant 构建文件。我需要编写一个单独的文件,其中包含所有项目共有的目标,然后将项目特定的内容写入他们自己的构建文件中。例如,我有一个名为“cleanDependencies”的目标。
<target name="cleanDependencies">
<echo>Cleaning dependencies... </echo>
<for list="dep1,dep2" param="dependency">
<sequential>
<ant dir="dep/@{dependency}" target="clean" inheritAll="false" />
</sequential>
</for>
</target>
这是我所有项目的共同目标,我想将它分成一个共同的目标文件;类似于
<target name="cleanDependencies">
<echo>Cleaning dependencies... </echo>
<for list="${listOfDependencies}" param="dependency">
<sequential>
<ant dir="dep/@{dependency}" target="clean" inheritAll="false" />
</sequential>
</for>
</target>
然后,我可以在我的项目的构建文件中定义一个名为“listOfDependencies”的列表,并且可以按照这些行包含来自不同文件的公共目标“cleanDependencies”。
<list name="listOfDependencies"> <!-- Not a valid tag in Ant -->
<item>dep1</item>
<item>dep2</item>
</list>
我的问题是:
1) 有没有办法在 ant 中定义变量列表?此问题与另一个问题 (Define a list or a set of variables in ant) 相同,但答案并未提供在 for 循环之外定义列表的方法。
2) 是否有其他方法可以实现这一目标?即一种将公共目标收集到单独文件中的方法,然后将其包含在具有适当变量的项目特定构建文件中。
【问题讨论】:
-
“for”任务不是标准 ant 的一部分,这可能解释了您的一些问题。对于依赖管理,我可以建议查看 Apache ivy。