使用 Gradle 将子项目中的构建工件收集到 RPM 中

Collect build artifacts from subprojects into RPM with Gradle

我有以下项目结构:

Root
+---Sub1
|
+---Sub2

Sub1 项目生成 JAR,Sub2 创建 WAR。 Root 项目目标是生成包含 Sub1Sub2 输出的 RPM。

我正在尝试使用 ospackage Gradle 插件来构建 RPM。这是根 build.gradle:

的一部分
ospackage {
    from subprojects.collect { it.tasks.withType(Zip) } into 'lib'
}

它可以工作,但对于 Sub2 JAR 和 WAR 都会创建,这是不希望的。

为了将适当的 jar 和 wars 收集到 RPM 中,应该应用什么配置?

更新

我正在寻找一些通用解决方案,即对子项目进行迭代比为每个子项目指定行为更可取。

解决方案是在Sub2项目的build.gradle中添加WAR插件:

apply plugin: 'war'

使buildRpm任务依赖于根构建文件中的所有子项目构建任务:

buildRpm.dependsOn getTasksByName('build', true)

最后配置 ospackage 插件以将工件收集到目标 RPM 中:

ospackage {
    from(subprojects.collect { "${it.buildDir}/libs" }) {
        into 'bin'
    }
}