【问题标题】:Collect build artifacts from subprojects into RPM with Gradle使用 Gradle 将子项目中的构建工件收集到 RPM 中
【发布时间】:2016-02-23 08:00:37
【问题描述】:

我的项目结构如下:

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 都被创建了,这是不可取的。

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

更新

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

【问题讨论】:

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

标签: gradle rpm multi-project


【解决方案1】:

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

apply plugin: 'war'

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

buildRpm.dependsOn getTasksByName('build', true)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 2018-07-09
    • 2012-01-15
    • 2021-09-04
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多