发布spring boot可执行jar工件

时间:2015-03-03 14:07:09

标签: gradle spring-boot

我正在使用Gradle发布机制,该机制仍在使用publishing DSL进行孵化。

    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
                pom.withXml {
                    def parentNode = asNode().appendNode('parent')
                    parentNode.appendNode('groupId', 'org.springframework.boot')
                    parentNode.appendNode('artifactId', 'spring-boot-starter-parent')
                    parentNode.appendNode('version', springBootVersion)
                }
                // BEGIN sourcejar
                artifact sourceJar {
                    classifier "sources"
                }
                // END sourcejar
                artifact sharedTestJar {
                    classifier "sharedtest"
                }
            }
        }

这基本上有效,但是当我添加分类器时,重新打包的工件不再被部署。那么我需要参考哪些配置来注册重新打包的工件以供发布?

bootRepackage {
    classifier = 'exec'
}

2 个答案:

答案 0 :(得分:2)

您必须将bootRepackage任务创建的jar文件添加为要发布的其他工件。不幸的是,bootRepackage任务似乎没有将此作为属性公开。

artifact(file("$buildDir/$project.name-$project.version-${bootRepackage.classifier}.jar")) {
    classifier 'exec'
}

答案 1 :(得分:0)

您可以获取'sourcesJar'任务,以便使用JavaPluginConvention附加要发布的源jar工件。要实现这一目标需要很长的时间,但是您最终没有对工件文件名进行硬编码。

publishing.publications.create('bootJava', MavenPublication).with {
    ...
    artifact project.tasks.getByName(
        project.getConvention().getPlugin(JavaPluginConvention)
            .getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME)
            .getSourcesJarTaskName())
}