Gradle + Nexus 管理Spring Boot的Jar
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle + Nexus 管理Spring Boot的Jar相关的知识,希望对你有一定的参考价值。
参考技术A Spring Boot 使你能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序。Gradle 是一种构建工具,和已有的ant、maven相比Gradle更简洁高效,胜任复杂的构建任务,社区活跃,技术成熟。
Spring Boot Gradle插件在 Gradle中 提供Spring Boot支持,你可以用它来做打包(生成可执行jar或war),运行Spring Boot应用程序,并提供的依赖关系管理 spring-boot-dependencies 。
Spring Boot的Gradle插件需要Gradle 4.0或更高版本。
Nexus作为Gradle的私服,请参考 https://www.jianshu.com/p/f50fd2531db1
gradle 默认有bootJar任务
需要jar包时执行bootJar命令即可。
上传开发版本运行 devUpload 命令,上传发布版本运行releaseUpload命令。
使用 Gradle 管理 Spring Boot 配置文件
【中文标题】使用 Gradle 管理 Spring Boot 配置文件【英文标题】:Manage Spring Boot Profiles with Gradle 【发布时间】:2021-05-09 00:57:46 【问题描述】:我有一个由 Gradle 管理的 Spring Boot 应用程序。
到目前为止做了什么:
-
已创建
application.yaml
、application-dev.yaml
和 application-qa.yaml
文件
在application.yaml
中提到了spring: profiles: active: dev
(如果没有提到,默认配置文件应该是dev
)
需要做什么:
-
需要在构建时使用提及或传递的配置文件构建
war
。例如,对于 QA 构建,spring: profiles: active:
应该具有值 qa
,以便它可以获取 application-qa.yaml
属性。
如果没有通过配置文件,则默认情况下应选择dev
配置文件
到目前为止的尝试:
在spring: profiles: active: @activeProfiles@
在application.yaml
中添加@activeProfiles@
并在build.gradle
中添加到sn-p 下方:
processResources
filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [
activeProfiles: activeProfiles
]
并触发以下命令来构建war
- gradlew clean build -PactiveProfiles=qa
,它为war
文件做了正确的工作。但是现在这种方法的问题是,如何在从 IDE 运行项目时为 activeProfiles
提供默认值(我通常更喜欢从 IntelliJ 运行 main
类)?
我也不确定这是否是正确的方法,或者是否有任何其他方法可以完成此任务。我已经用 Maven 轻松完成了所有这些工作,但我是 Gradle 新手,使用 Gradle 是项目要求。
【问题讨论】:
我没有使用过 intelliJ,但听起来你需要设置的是运行配置。你可以在那里提供默认运行参数jetbrains.com/help/idea/go-plugin-run-debug-configurations.html 但是我需要传递哪些参数以及如何传递? ***.com/questions/2066307/… 这应该会有所帮助。在 Eclipse 中,您几乎可以提供文本-PactiveProfiles=qa
作为参数。应该和intellij类似
@Kasun 我试过了,但是没用
我已经解决了这个问题。在下面检查我的答案。
【参考方案1】:
在不同环境中切换配置文件的一种常见方法是将SPRING_PROFILES_ACTIVE
环境变量设置为您想要的值,然后让 Spring 引导使用它。例如,在 QA 环境中,您可以将值设置为 qa,Spring 将自动使用 qa 应用程序属性。
阅读更多:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-set-active-spring-profiles
【讨论】:
不,我不想那样做。我想在运行/构建代码时提及配置文件。【参考方案2】:如果在运行/构建代码时没有传递配置文件,我可以设置默认配置文件,使用build.gradle
文件中的以下配置。在任何 IDE 中都不需要额外的配置来运行项目。
def activeProfiles=project.properties['activeProfiles'] ?: "dev" // set default (dev) profile if no profile is passed as property
processResources
filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [
activeProfiles: activeProfiles
]
根据环境,我有 3 个 yaml 文件用于配置:
application.yaml
application-dev.yaml
application-qa.yaml
application.yaml
包含以下配置,用于弹簧配置文件管理,以及其他常见配置:
spring:
profiles:
active: @activeProfiles@
...
application-dev.yaml
和 application-qa.yaml
文件包含与各自环境相关的配置。
【讨论】:
以上是关于Gradle + Nexus 管理Spring Boot的Jar的主要内容,如果未能解决你的问题,请参考以下文章
带有私有仓库的 Spring Boot Gradle bootBuildImage 任务