0

我用 gradle 写了一个 spring-boot 应用程序,它运行正常。

我使用 bootRepackage 构建了一个胖 jar,我添加了 maven 插件,以便我可以安装 jar。

问题是我无法将 fat jar 安装到 maven 存储库。

  1. “bootRepackage”构建那个胖 jar 文件
  2. install 依赖于“jar”阶段,因此它构建了一个覆盖胖 jar 文件的瘦 jar
  3. 将瘦 jar 复制到存储库

这是我的基础项目的 gradle 脚本,请注意我仍在尝试安装到我的本地存储库(我们是一家新公司,我们仍在构建远程存储库)

subprojects {
group 'myGroup'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'

sourceCompatibility = 1.8

buildscript {
    repositories {
        jcenter()
    }

    dependencies {

        classpath 'io.spring.gradle:dependency-management-plugin:0.5.6.RELEASE'
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE'
        classpath 'com.bmuschko:gradle-tomcat-plugin:2.0'

    }

}

repositories {
    jcenter()
}



dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile 'org.mockito:mockito-all:1.8.4'
    compile 'ch.qos.logback:logback-classic:1.1.7'
}



task wrapper(type: Wrapper) {
    gradleVersion = '2.12'
}
}

模块的 Gradle 脚本:

apply plugin: "io.spring.dependency-management"
apply plugin: "spring-boot"

repositories {
jcenter()
}

dependencyManagement {
imports {
    mavenBom 'io.spring.platform:platform-bom:2.0.3.RELEASE'
}
}
dependencies {
   compile "org.springframework:spring-web"
   compile "org.springframework.boot:spring-boot-starter-web"
   compile "org.springframework.boot:spring-boot-starter-actuator"
   compile 'com.netflix.feign:feign-okhttp:8.16.2'
}
4

1 回答 1

1

您需要确保bootRepackage任务在install. 一种粗略的方法是在命令行上指定两者:

./gradlew bootRepackage install

更好的方法是将install任务配置为依赖于bootRepackage任务。您可以通过将以下内容添加到您的build.gradle:

install {
    dependsOn bootRepackage
}

有了这个配置,Gradle 会bootRepackage在你运行时自动运行install。例如:

$ ./gradlew install
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:jar
:bootRepackage
:install

BUILD SUCCESSFUL

Total time: 5.487 secs
于 2016-05-10T16:39:38.870 回答