包含多个要构建的文件夹的 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 将包含这些目标。
我正在尝试在 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 将包含这些目标。