本文主要是介绍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功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!