gpt4 book ai didi

gradle - 如何在Gradle中为复合项目创建WAR?

转载 作者:行者123 更新时间:2023-12-03 04:00:06 24 4
gpt4 key购买 nike

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

复合项目

  • P1
  • build.gradle
  • settings.gradle
  • P2
  • build.gradle
  • settings.gradle
  • P3
  • build.gradle
  • settings.gradle

  • build.gradle

    settings.gradle

    Composite-project-> 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')
    }

    Composite-project-> 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)
    }

    现在,如果我运行“Composite-project”的构建,则所有项目都已配置,但未创建WAR文件和JAR文件。仅在为该项目运行构建时才创建war文件。如何完成这项任务?

    最佳答案

    我有一个类似的情况,并解决了这个问题。

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

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

    然后为复合项目定义一个根 buildAll任务:
    task buildAll {
    dependsOn gradle.includedBuilds*.task(':buildAll')
    }

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

    另请参见
  • Defining a composite build only to build all subprojects
  • Depending on tasks in an included build

  • GitHub上有 the example,我专门为这种情况准备的。

    关于gradle - 如何在Gradle中为复合项目创建WAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47344983/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com