无法使用 gradle 将 spring-boot fat jar 安装到 Maven 存储库
Cannot install a spring-boot fat jar to a maven repository using gradle
我用 gradle 编写了一个 spring-boot 应用程序,它运行正常。
我使用 bootRepackage 构建了一个 fat jar,我添加了 maven 插件以便安装 jars。
问题是我无法将 fat jar 安装到 maven 存储库。
- "bootRepackage" 构建那个 fat jar 文件
- 安装依赖于 "jar" 阶段,因此它会构建一个覆盖胖 jar 文件的瘦 jar 文件
- thin 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'
}
您需要确保 bootRepackage
任务在 install
之前 运行。一种粗略的方法是在命令行上指定两者:
./gradlew bootRepackage install
更好的方法是将 install
任务配置为依赖于 bootRepackage
任务。您可以通过将以下内容添加到您的 build.gradle
:
install {
dependsOn bootRepackage
}
有了这个配置,Gradle 将在您 运行 install
时自动 运行 bootRepackage
。例如:
$ ./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
我用 gradle 编写了一个 spring-boot 应用程序,它运行正常。
我使用 bootRepackage 构建了一个 fat jar,我添加了 maven 插件以便安装 jars。
问题是我无法将 fat jar 安装到 maven 存储库。
- "bootRepackage" 构建那个 fat jar 文件
- 安装依赖于 "jar" 阶段,因此它会构建一个覆盖胖 jar 文件的瘦 jar 文件
- thin 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'
}
您需要确保 bootRepackage
任务在 install
之前 运行。一种粗略的方法是在命令行上指定两者:
./gradlew bootRepackage install
更好的方法是将 install
任务配置为依赖于 bootRepackage
任务。您可以通过将以下内容添加到您的 build.gradle
:
install {
dependsOn bootRepackage
}
有了这个配置,Gradle 将在您 运行 install
时自动 运行 bootRepackage
。例如:
$ ./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