ANT:如何为子目录中的所有build.xml调用目标?

时间:2009-07-29 13:12:29

标签: ant

如何使用通配符调用位于所有子目录中的所有build.xml中的特定目标(即不对子目录名称进行硬编码)?以下答案是硬编码的。有没有办法在没有硬编码的情况下做到这一点?

与此问题类似:Pass ant target to multiple build.xml files in subdirectories

4 个答案:

答案 0 :(得分:6)

使用Ant subant任务,如下所示:

<subant target="sometarget">
        <fileset dir="." includes="*/build.xml" />
</subant>

如果您包含“inheritall”属性(与其使用方式相同但默认相反),您可以共享所有当前项目的属性和所有内容。如果需要,这也可以很容易地覆盖主build.xml文件中定义的任务。

详细了解here

答案 1 :(得分:0)

我将在build.properties文件中设置不同的属性。我使用它们来动态构建目标中的路径。

定义build.properties文件的位置:

  <!--  all properties are in build.properties --> 
  <property file="build.properties" /> 

在目标中使用这些属性:

                                                            

构建属性中的属性与设置.ini文件类似:

project.rootdir=c:/Deploy
project.tempbuilddir = c:/Deploy/Temp/Inetpub
project.builddir=c:/Deploy/Inetpub
# Build prefix will be added to that tags urls (.../tags/${project.buildprefix}Build_${today.date})
project.buildprefix=ACA_

我猜你可以使用动态文件作为属性文件,只要你定义了文件的正确路径。您可以将其指向服务器端文件以动态编写属性文件(ColdFusion,PHP,JSP等)。

答案 2 :(得分:0)

我已经使用ant-contrib's foreach任务来做这样的事情。

http://ant-contrib.sourceforge.net/tasks/tasks/foreach.html

答案 3 :(得分:0)

听起来像&lt; subant&gt;的完美候选人任务。