在不同目录中的不同ant脚本中运行特定目标

pro*_*007 1 ant subant

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

以下是问题:

  1. 有些项目比其他项目更深入.
  2. 只需要一次构建一些项目.

我试图在属性文件中使用subant+ antfile并定义文件路径的CSV,但这不起作用.以下是我所拥有的和我得到的错误.

如果有更好的方法来做到这一点或者你知道我的问题是什么,请告诉我!谢谢!

这是属性文件中定义的属性.我希望运行脚本的人在这里添加相对于他们正在运行的脚本的当前位置的文件路径.

projects.to.build=
Run Code Online (Sandbox Code Playgroud)

这是我尝试在主构建脚本中使用的子任务.

    <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>
Run Code Online (Sandbox Code Playgroud)

这是我在属性文件中定义项目时尝试运行构建脚本时得到的错误.我正在使用相对路径.例如:..\Apps\AnApp1\build.xml,..\Apps\AnApp2\build.xml,..\OtherApps\foo\AnotherApp1\build.xml

"No Build Path Specified" (at my subant task)
Run Code Online (Sandbox Code Playgroud)

Mar*_*nor 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>
Run Code Online (Sandbox Code Playgroud)

更新

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

<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>
Run Code Online (Sandbox Code Playgroud)

处理以下构建文件:

  • 项目/一个/ build.xml文件
  • 项目/二/ build.xml文件
  • 项目/三相/ build.xml文件
  • 项目/四/ build.xml文件