1

我们有大量的应用程序。它们都有一个build.xml位于项目基目录中的文件。我正在尝试创建一个 ant 脚本,该脚本将遍历并调用build.xml所有项目中每个文件的特定目标。

以下是问题:

  1. 一些项目比其他项目位于更深的目录中。
  2. 一次只需要构建一些项目。

我试图使用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)
4

2 回答 2

12

您指定了antfile属性,因此 ANT 期望单个build.xml文件。


subant 文档描述了如何将文件集用作子参数。

这是一个例子:

<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>

更新

或者,可以使用文件列表:

<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
于 2012-02-04T10:10:06.120 回答
-1

是否可以同时在所有构建文件中运行目标?

例如

<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)中存在的目标“测试”?

于 2016-02-25T14:22:21.030 回答