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

时间:2012-02-03 17:24:45

标签: ant subant

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

以下是问题:

  1. 有些项目比其他项目更深入。
  2. 一次只需要建立一些项目。
  3. 我尝试使用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)
    

2 个答案:

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

处理以下构建文件:

  • 项目/一个/ build.xml中
  • 项目/ 2 /的build.xml
  • 项目/ 3 / build.xml中
  • 项目/ 4 / build.xml中

答案 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”?