1

我正在为 Gradle 使用 Eclipse Buildship V2.1.2。我有两个独立的 Web 项目 P1 和 P2 以及一个项目 P3,它充当所有其他项目的依赖项。我的任务是创建一个主要构建,我可以使用它从 P1 和 P2 构建和生成 WAR 文件以及从 P3 生成 JAR 文件。我应该包含这个 P3 jar 文件作为 P1 和 P2 的依赖项。我创建了一个composite-build具有以下结构的,

复合项目

  • P1

    • 构建.gradle
    • 设置.gradle
  • P2

    • 构建.gradle
    • 设置.gradle
  • P3
    • 构建.gradle
    • 设置.gradle

构建.gradle

设置.gradle

复合项目-> build.gradle:

task run {
    println "Tasks: services"
    dependsOn gradle.includedBuild('P1').task(':run')
    dependsOn gradle.includedBuild('P2).task(':run')
    dependsOn gradle.includedBuild('P3).task(':run')
}

复合项目-> settings.gradle:

rootProject.name = 'services'
includeBuild 'P1'
includeBuild 'P2'
includeBuild 'P3'

P1 -> build.gradle

apply plugin: 'war'
defaultTasks 'run'

task run {
   println "Tasks: cluster"
  buildDir = new File(rootProject.projectDir, "gradleBuild/" + project.name)
}

现在,如果我运行“复合项目”的构建,所有项目都已配置,但未创建 WAR 文件和 JAR 文件。只有在为该项目运行构建时才会创建战争文件。如何完成这项任务?

4

1 回答 1

1

我有一个类似的案例并像这样解决了它。

首先buildAll为每个项目定义一个任务:

task buildAll(type: GradleBuild) {
    tasks = [ 'build' ]
}

然后为复合项目定义一个根buildAll任务:

task buildAll {
    dependsOn gradle.includedBuilds*.task(':buildAll')
}

之后调用gradle buildAll将构建所有嵌套项目,您将获得所需的构建工件。

也可以看看

GitHub上有我专门为这个案例准备的例子

于 2017-12-14T06:20:27.657 回答