如何让 Teamcity Artifactory 插件在 Gradle 中调用 bootJar 而不是 Jar?
How can I have Teamcity Artifactory plugin invoke bootJar instead of Jar in Gradle?
我们正在使用 Gradle 4.8.1 生成 Spring 引导可执行文件 jar。这在本地工作正常。但是,我们正在使用 Teamcity 将我们的工件发布到 Artifactory。
根据我的理解,问题是 "artifactoryPublish" 任务调用了 Gradle 中的 "jar" 任务,该任务从 "Archives" 上传工件。因此,无论 teamcity 是否调用 "assemble" 任务、"bootjar" 任务或 "build" 任务,artifactory 插件都在获取 "jar" 任务的输出结束并发布它,而我们希望在 artifactory 中获得 "bootjar" 任务(fat jar)的输出。
有什么方法可以强制 artifactoryPublish 到 运行 bootjar 而不是 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-publish 插件来完成这项工作。
apply plugin: 'maven-publish'
publishing.publications {
bootJava(MavenPublication) {
artifact bootJar
}
}
我们正在使用 Gradle 4.8.1 生成 Spring 引导可执行文件 jar。这在本地工作正常。但是,我们正在使用 Teamcity 将我们的工件发布到 Artifactory。
根据我的理解,问题是 "artifactoryPublish" 任务调用了 Gradle 中的 "jar" 任务,该任务从 "Archives" 上传工件。因此,无论 teamcity 是否调用 "assemble" 任务、"bootjar" 任务或 "build" 任务,artifactory 插件都在获取 "jar" 任务的输出结束并发布它,而我们希望在 artifactory 中获得 "bootjar" 任务(fat jar)的输出。
有什么方法可以强制 artifactoryPublish 到 运行 bootjar 而不是 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-publish 插件来完成这项工作。
apply plugin: 'maven-publish'
publishing.publications {
bootJava(MavenPublication) {
artifact bootJar
}
}