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

标签 gradle buildship

我正在使用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/

    相关文章:

    android - react native : Build failed with an exception

    java - 程序类型已存在 : org. json.CDL

    eclipse - Buildship-将其他Eclipse项目作为依赖项

    gradle - Eclipse:如何将Gradle依赖项部署到Tomcat

    java - Eclipse Oxygen 中对 JavaFX 类的访问限制

    java - Gradle DSL 方法未找到 : testCompile()

    java - 部署gradle到目录

    android - 如何在运行我的 gradle 构建之前在 Android Studio 中设置环境变量

    java - Gradle Buildship 项目依赖周期误报

    gradle-eclipse - Gradle 项目与 Buildship 的依赖关系