我们有大量的应用。它们都有一个位于项目基目录中的build.xml
文件。我正在尝试创建一个ant脚本,该脚本将通过并调用所有项目中每个build.xml
文件的特定目标。
以下是问题:
我尝试使用subant
+ antfile
并在属性文件中定义文件路径的CSV,但这不起作用。以下是我所拥有的以及我得到的错误。
如果有更好的方法可以做到这一点,或者你知道我的问题是什么,请告诉我!谢谢!
这是属性文件中定义的属性。我希望运行脚本的人在这里添加相对于他们正在运行的脚本的当前位置的文件路径。
projects.to.build=
这是我尝试在主构建脚本中使用的子任务。
<filelist
id="projectNames"
dir="${basedir}"
files="${projects.to.build}"
/>
<target name="debugAll" description="Builds all the projects listed in the projectNames.properties file.">
<subant target="debug" antfile="${projects.to.build}">
</subant>
</target>
当我在属性文件中定义项目时尝试运行构建脚本时,我得到的错误。我正在使用相对路径。例如:.. \ Apps \ AnApp1 \ build.xml,.. \ Apps \ AnApp2 \ build.xml,.. \ OtherApps \ foo \ AnotherApp1 \ build.xml
"No Build Path Specified" (at my subant task)
答案 0 :(得分:11)
您指定了 antfile 属性,因此ANT需要一个 build.xml 文件。
subant documentation描述了如何将文件集用作子参数。
以下是一个例子:
<project name="Subant demo" default="run-debug-target">
<target name="run-debug-target">
<subant target="debug">
<fileset dir="." includes="**/build.xml" excludes="build.xml"/>
</subant>
</target>
</project>
或者可以使用filelist:
<project name="Dry run" default="run">
<target name="run">
<subant target="test">
<filelist dir="projects" files="one/build.xml,two/build.xml,three/build.xml,four/build.xml"/>
</subant>
</target>
</project>
处理以下构建文件:
答案 1 :(得分:-1)
是否可以同时在所有构建文件中运行目标?
E.g。
<project name="Dry run" default="run">
<target name="run">
<subant target="test">
<filelist dir="projects" files="one/build.xml,two/build.xml,three/build.xml,four/build.xml"/>
</subant>
</target>
</project>
在这个例子中,有没有办法在所有构建文件(一个/ build.xml,两个/ build.xml,三个/ build.xml,四个/ build.xml)中同时运行目标“test”?