Gradle maven-publish 不构建独立的 spring-boot 应用程序
Posted
技术标签:
【中文标题】Gradle maven-publish 不构建独立的 spring-boot 应用程序【英文标题】:Gradle maven-publish does not build standalone spring-boot application 【发布时间】:2014-11-30 11:26:57 【问题描述】:当我使用gradle build
构建一个spring-boot 应用程序(到一个独立的jar)时,会生成正确的工件。生成的 jar 包含所有依赖的 jar,并且是可执行的。
我还配置了maven-publish插件如下:
publishing
publications
mavenJava(MavenPublication)
from components.java
现在,当我执行gradle publish
时,将构建并发布一个没有依赖关系的小得多的 jar。
在后一种情况下不执行以下步骤。
:myProject:bootRepackage
:myProject:assemble
如何确保发布时执行正确的构建步骤?
【问题讨论】:
【参考方案1】:我有点惊讶从components.java
发布不会触发Java 插件的assemble
任务。 Spring Boot 的 bootRepackage
任务设置为 assemble
任务的依赖项,因此您需要使 publish
运行 assemble
。尝试将以下内容添加到您的build.gradle
:
publish
dependsOn assemble
【讨论】:
原因是Java插件只是将jar
任务的结果添加到组件集合中。 Spring Boot 插件负责将其修改为重新打包的 jar。也就是说,有人可能会争辩说,发布的内容实际上应该只是普通的 jar,而重新打包的 jar 可能应该在一个唯一的分类器下发布。
这是一个很好的建议,谢谢。 Spring Boot 当前并未将重新打包的 jar 视为单独的工件,而是将 jar 任务的输出转换到位。我现在想知道是否也应该更改它,以便可以在 Gradle 构建中引用原始工件和重新打包的工件。我打开了github.com/spring-projects/spring-boot/issues/1666。
在重新打包的 jar 上分配一个分类器是already supported。只需添加 `bootRepackage classifier = 'boot' 。
我指的是使重新打包的工件在构建中可用,例如通过将其包含在 project.configurations.archives.allArtifacts 中以上是关于Gradle maven-publish 不构建独立的 spring-boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
什么命令将使用maven-publish成功推送到s3存储桶