如何使用 spring boot 插件 2.0.x 从一个具有不同依赖项的 gradle 项目生成 2 个 jars
Posted
技术标签:
【中文标题】如何使用 spring boot 插件 2.0.x 从一个具有不同依赖项的 gradle 项目生成 2 个 jars【英文标题】:How to generate 2 jars from one gradle project with different dependencies using sring boot plugin 2.0.x 【发布时间】:2019-03-20 02:45:01 【问题描述】:我正在尝试将我的项目迁移到最新版本的 Spring 和 Spring Boot。在我遇到这个问题之前,一切都很顺利。
我们的一个项目生成了两个版本的最终 Jar,一个具有最小依赖项的普通可运行版本,另一个具有所有额外模块。
当我使用 Spring Boot 1.5.x 版本时,解决方案很简单,我们使用了 'customConfiguration`
当我使用旧插件时,我的配置文件看起来或多或少像这样
bootRepackage
customConfiguration = "addons"
dependencies
compile "my.org:core-lib:1.0.0"
addons "my.org:extra-lib:1.0.0"
现在bootRepackage
被bootJar
取代,它不拥有customConfiguration
的属性。这是否可以在最新版本的插件中执行,如果可以,那么请有人指出我正确的方向。
【问题讨论】:
这不会构建两个单独的 jar,因为bootRepackage
将覆盖由 jar
任务生成的 jar。如果您对行为的描述是准确的,那么您的构建配置肯定比您在此处显示的要多。
【参考方案1】:
bootJar 是 Jar 类的子类,所以你可以在这里使用 Jar 任务的配置。
例子:
configurations
//second jar's configuration
addons
dependencies
....
// sample dependency
addons group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.1'
task customJar(type: org.springframework.boot.gradle.tasks.bundling.BootJar)
baseName = 'custom-spring-boot'
version = '0.1.0'
mainClassName = 'hello.Application'
from
// this is your second jar's configuration
configurations.addons.collect it.isDirectory() ? it : zipTree(it)
with bootJar
// add a dependency to create both jars with gradle bootJar Command
bootJar.dependsOn customJar
(有更简单的方法可以做到这一点,我不知道)
【讨论】:
我希望有另一种方法,因为我不太喜欢这种解决方案。在旧版本中它是如此漂亮和干净。我赞成它,如果我找不到更好的东西,那么我会接受它。谢谢 @user902383 为什么你不喜欢这个解决方案?没有其他的了。 @Opal 也许我表达自己错了,我对解决方案没有问题,但对 plugin.way 所做的更改感觉更干净。但正如我所说,如果这只是一种方式,我很乐意接受它以上是关于如何使用 spring boot 插件 2.0.x 从一个具有不同依赖项的 gradle 项目生成 2 个 jars的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 spring-boot gradle 插件进行 proguard
迁移到 Spring Boot 2.0.x 时全局 CORS 配置中断
如何使用 Spring Boot“bootJar”插件创建 gradle 任务以生成爆炸性战争?
如何排除依赖项被 Spring Boot 的依赖项管理插件固定?