包含多个要构建的文件夹的 Ant 项目

Ant Project containing multiple folders to build

我正在尝试在 Ant 中实现以下层次结构:

父项目

build.xml
RuntimeFolder_1
    build.xml
RuntimeFolder_2
    build.xml
RuntimeFolder_n
    build.xml

在这里,当我构建 ParentFolder build.xml 时,它应该迭代所有子文件夹并构建它们。用户可以添加任意数量的 运行 个时间文件夹。 另外,我应该能够单独构建 RuntimeFolder_1...RuntimeFolder_n 。 有人知道我该怎么做吗?

我知道 OP 请求 Ant,但他表示对 Gradle 解决方案感兴趣,该解决方案可能看起来像

build.gradle
settings.gradle
project1/
    build.gradle
project2/
    build.gradle
project3/
    build.gradle

你的settings.gradle可能看起来像

rootDir.listFiles().each {
    if (new File(it, 'build.gradle').exists()) {
        include ":$it.name"
    }
}

然后将 java 插件应用到每个子项目。这可以在根 build.gradle

中以编程方式完成
subprojects {
    apply plugin: 'java'
}

或在每个 subproject\build.gradle

apply plugin: 'java'

如需进一步阅读,请参阅 multi project builds and the java plugin

为此,我们可以使用subant:http://ant.apache.org/manual/Tasks/subant.html

示例如下:

父级 build.xml 将包含:

<macrodef name="iterate">
    <attribute name="target"/>
    <sequential>
        <subant target="@{target}">
            <fileset dir="modules" includes="*/build.xml"/>
        </subant>
    </sequential>
</macrodef>
<target name="compile">
    <iterate target="compile"/>
</target>

内部文件夹 build.xml 将包含这些目标。