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.yamlapplication-dev.yamlapplication-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.yamlapplication-qa.yaml 文件包含与各自环境相关的配置。

【讨论】:

以上是关于Gradle + Nexus 管理Spring Boot的Jar的主要内容,如果未能解决你的问题,请参考以下文章

Gradle私服上传自己的库项目

带有私有仓库的 Spring Boot Gradle bootBuildImage 任务

Nexus3配合Gradle搭建私有仓库

Nexus3配合Gradle搭建私有仓库

Linux 使用 Nexus3.x 为 Android 搭建私服

gradle 配置 nexus repository