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

使用Gradle将子项目中的构建工件收集到RPM中,gradle,rpm,multi-project,Gradle,Rpm,Multi Project,我有以下项目结构: Root +---Sub1 | +---Sub2 Sub1project生成JAR,Sub2创建WAR。 Root项目目标是生成包含Sub1和Sub2输出的RPM 我正在尝试使用ospackageGradle插件构建RPM。下面是rootbuild.gradle的一部分: ospackage { from subprojects.collect { it.tasks.withType(Zip) } into 'lib' } apply plugin: 'war'

我有以下项目结构:

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

我正在尝试使用
ospackage
Gradle插件构建RPM。下面是root
build.gradle的一部分:

ospackage {
    from subprojects.collect { it.tasks.withType(Zip) } into 'lib'
}
apply plugin: 'war'
它可以工作,但是对于Sub2,JAR和WAR都会被创建,这是不可取的

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

更新


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

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

ospackage {
    from subprojects.collect { it.tasks.withType(Zip) } into 'lib'
}
apply plugin: 'war'
使
buildRpm
任务依赖于根生成文件中的所有子项目生成任务:

buildRpm.dependsOn getTasksByName('build', true)
最后配置
ospackage
插件将工件收集到目标RPM中:

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

你不能做
project('Sub1').tasks.withType(Jar)
project('Sub2').tasks.withType(War)
谢谢,但我忘了提到子项目的数量是不同的,所以最好应用一些通用的多态特性。