首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >令人耳目一新的行为为多个春靴战争的返回1000个耳朵

令人耳目一新的行为为多个春靴战争的返回1000个耳朵
EN

Stack Overflow用户
提问于 2018-07-25 15:42:19
回答 1查看 279关注 0票数 0

我需要将所有使用Spring Boot创建的微服务打包到一个大耳朵中。

该项目的组织方式如下:

代码语言:javascript
复制
/root   
    build.gradle
    settings.gradle   
    /project1
        build.gradle
        ...
    /project3
        build.gradle
        ...
    /project3
        build.gradle
        ...

根settings.gradle包含:

代码语言:javascript
复制
rootProject.name = "mysystem"

include("project1")
include("project2")
include("project3")

根目录中的build.gradle包含

代码语言:javascript
复制
apply plugin: 'ear'

allprojects {
  group = 'de.example'
}

dependencies {
  deploy project(path:':project1', configuration:'archives')
  deploy project(path:':project2', configuration:'archives')
  deploy project(path:':project3', configuration:'archives')
}



ear {
    deploymentDescriptor {
        applicationName = "myproject"
        initializeInOrder = true
        displayName = "My Project"
        description = "My Project EAR"
    }
}

项目build.gradle看起来像这样

代码语言:javascript
复制
buildscript {
  ext {
    springBootVersion = '2.0.2.RELEASE'
  }
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
  }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
defaultTasks 'bootWar'

repositories {
  mavenCentral()
  // Maven Spring Repository for Milestone Releases (optional for development but don't use it in Production)
  maven { url 'https://repo.spring.io/libs-milestone-local' }
  // Maven Spring Repository for Stable Releases
  maven { url 'https://repo.spring.io/libs-release-local' }
}

dependencyManagement {
  imports {
    mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Finchley.RELEASE'
  }
}

dependencies {
  compile("org.springframework.boot:spring-boot-starter") {
  }
  compile('org.springframework.boot:spring-boot-starter-json')
  compile("org.springframework.boot:spring-boot-starter-web") {
  }
  providedCompile('org.springframework.boot:spring-boot-starter-tomcat')
}

当我针对每个项目运行gradle时,它会在每个项目的bootWar /lib中生成WAR。

但是,当我在根项目中运行gradle ear时,输出如下所示:

代码语言:javascript
复制
Working Directory: D:\Workspace\root
Gradle User Home: D:\Workspace\.gradle
Gradle Distribution: Gradle wrapper from target build
Gradle Version: 4.3
Java Home: C:\Programme\Java\jdk8
JVM Arguments: None
Program Arguments: None
Build Scans Enabled: false
Offline Mode Enabled: false
Gradle Tasks: ear

Parallel execution with configuration on demand is an incubating feature.
:project1:compileJava
:project2:compileJava
:project3:compileJava
:project1:processResources
:project1:classes
:project1:war SKIPPED
:project2:processResources
:project2:classes
:project2:war SKIPPED
:project3:processResources
:project3:classes
:project3:war SKIPPED
:ear

BUILD SUCCESSFUL in 2s
7 actionable tasks: 7 executed

结果是一个大小为1k的耳朵。每个项目都不会生成WAR。当我在每个项目上运行gradle bootWar,然后运行gradle ear,它就可以工作了,生成的EAR有130Mb,并且包含了所有的WAR。

有没有一种方法,我只需要运行gradle ear,它就会从bootWar生成WAR?

EN

回答 1

Stack Overflow用户

发布于 2018-08-25 00:03:12

在gradle Spring Boot项目中,"war“任务被禁用,而不是"bootWar”任务。

将父build.gradle中的"ear“任务设置为依赖于"bootWar”任务。

代码语言:javascript
复制
ear {
  dependsOn ':project1:bootWar'
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51513435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档