如何使用Gradle实现类似Maven的profiles功能
作者:Meta39
这篇文章主要介绍了如何使用Gradle实现类似Maven的profiles功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
版本说明
- GraalVM JDK 21.0.3
- Gradle 8.7
- Spring Boot 3.2.5
目录结构

指定环境打包
application.yml/yaml/properties
执行 bootJar 打包命令前要先执行 clean【其它和 processResources 相关的命令也要先执行 clean】,否则 active 值不会变!
spring:
profiles:
# 执行 bootJar 打包命令前要先执行 clean【其它和 processResources 相关的命令也要先执行 clean】,否则 active 值不会变!
active: @activeProfiles@build.gradle 修改 processResources 任务
def activeProfiles = project.properties['activeProfiles'] ?: "dev"
processResources {
exclude {
FileTreeElement details ->
{
(//排除不是当前环境的 yml 配置文件
details.file.name.startsWith("application-")
&& details.file.name.endsWith(".yml")
&& !details.file.name.equals("application.yml")
&& !details.file.name.equals("application-" + activeProfiles + ".yml")
) || (//排除不是当前环境的 yaml 配置文件
details.file.name.startsWith("application-")
&& details.file.name.endsWith(".yaml")
&& !details.file.name.equals("application.yaml")
&& !details.file.name.equals("application-" + activeProfiles + ".yaml")
) || (//排除不是当前环境的 properties 配置文件
details.file.name.startsWith("application-")
&& details.file.name.endsWith(".properties")
&& !details.file.name.equals("application.properties")
&& !details.file.name.equals("application-" + activeProfiles + ".properties")
)
}
}
filter ReplaceTokens, tokens: [
activeProfiles: activeProfiles
]
}打包
因为没有指定环境,默认dev

可以先在build/resources/main目录下查看是否只包含对应环境的文件


jar包里的文件和变量也对的上

指定test环境打包

bootJar追加application.yml配置的spring.profiles.active的@activeProfiles@变量名并指定环境为test后点ok保存

先clean再bootJar,否则不会生效!!!

打包输出到控制台的命令可以查看配置有没有生效

查看文件是否符合预期

到此这篇关于Gradle实现类似Maven的profiles功能的文章就介绍到这了,更多相关Gradle profiles功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
