在ant中定义一个变量列表,可以在for循环中使用



我正在为一个有几个依赖项的项目编写一个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"的列表,并且我可以包括来自不同文件的公共目标"cleanDependencie",沿着这些行。

<list name="listOfDependencies"> <!-- Not a valid tag in Ant -->
<item>dep1</item>
<item>dep2</item>
</list>

我的问题是:

1) 有没有一种方法可以定义ant中的变量列表?这个问题与另一个问题(在ant中定义一个列表或一组变量)相同,但答案并没有给出在for循环之外定义列表的方法。

2) 有没有其他方法可以实现这一点?即在单独的文件中收集公共目标,然后将其包含在具有适当变量的项目特定构建文件中。

Ant中没有list元素或任务。可以使用包含以逗号分隔的依赖项的属性。公共目标已经依赖于listOfDependencies属性,所以您所需要做的就是从调用目标传递该属性。应该简单到:
<!-- calling buildfile -->
<property name="listOfDependencies" value="dep1,dep2" />
<ant antfile="common/build.xml" target="cleanDependencies" />

默认情况下,子项目继承父项目的所有属性(这可以使用inheritAll属性进行控制)。

至于替代方案,请查看import任务,该任务可用于包含公共构建文件,并将其调用为在主构建文件中定义其目标。

相关内容

  • 没有找到相关文章

最新更新