我们正在使用Gradle 4.8.1生成Spring Boot可执行jar。这在本地工作得很好。但是,我们正在使用Teamcity将我们的工件发布到艺术家工厂。
根据我的理解,问题是“artifactoryPublish”任务调用了Gradle中的“jar”任务,该任务从“Archives”中上传工件。因此,无论teamcity调用的是“组装”任务、“bootjar”任务还是“构建”任务,artiFactory插件最终都会获取“jar”任务的输出并将其发布,而我们希望在artiFactory中拥有“bootjar”任务(胖jar)的输出。
有没有什么方法可以强制artifactoryPublish运行bootjar而不是jar?或者jar任务也创建一个胖jar?或者我应该考虑另一种方法?
这是我的一个子项目的build. gradle
plugins {
id "org.springframework.boot" version "2.0.4.RELEASE"
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
apply plugin: 'java'
repositories {
mavenCentral()
}
description = 'atlas-data-service'
// Dynamically insert TeamCity build number if available
if (hasProperty("teamcity")) {
version = teamcity["build.number"]
println "Release version with TeamCity build number passed into gradle is " + version
} else {
// Take the default appVersion defined in top level build.gradle when building outside of TeamCity
version = "$appVersion"
}
jar {
baseName = 'data-service'
enabled = true
}
bootJar {
mainClassName = 'c.m.f.a.dataservice.AtlasDataServiceApplication'
baseName = 'data-service'
enabled = true
classifier = 'boot'
}
dependencies {
...
}
这个问题是去年的,但更新以防其他人来寻找同样的问题。
我使用Maven发布插件来完成工作。
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#publishing-your-application-maven-publish
apply plugin: 'maven-publish'
publishing.publications {
bootJava(MavenPublication) {
artifact bootJar
}
}