提问者:小点点

我怎么能有Teamcity艺术家插件调用bootJar而不是JarGradle?


我们正在使用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 {
...
}

共1个答案

匿名用户

这个问题是去年的,但更新以防其他人来寻找同样的问题。

我使用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
    }
}