Gradle实现类似Maven的profiles功能

版本说明

  1. GraalVM JDK 21.0.3
  2. Gradle 8.7
  3. Spring Boot 3.2.5

目录结构

指定环境打包

application.yml/yaml/properties

执行 bootJar 打包命令前要先执行 clean【其它和 processResources 相关的命令也要先执行 clean】,否则 active 值不会变!

yaml 复制代码
spring:
  profiles:
    # 执行 bootJar 打包命令前要先执行 clean【其它和 processResources 相关的命令也要先执行 clean】,否则 active 值不会变!
    active: @activeProfiles@

build.gradle 修改 processResources 任务

yaml 复制代码
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,否则不会生效!!!

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

查看文件是否符合预期

相关推荐
计算机周老师1 小时前
java-Arrays实战案例
java·开发语言·算法
林的快手1 小时前
JAVA里的object类
java·开发语言
泉绮1 小时前
springboot+vue 开发记录(八) 前端项目打包
前端·vue.js·spring boot
java6666688881 小时前
Spring Boot中的事件驱动开发
驱动开发·spring boot·后端
Karen1981 小时前
基于weixin小程序智慧物业系统的设计
java·spring boot·后端·毕业设计·课程设计
不要飞升1 小时前
百日筑基第七天-JAVA开发IDEA调试技巧(常用按钮)
java·intellij-idea·实习
吃饱很舒服2 小时前
Android Color 设置透明度
android·java·前端·kotlin
一丝晨光2 小时前
final、const、readonly关键字在不同语言中代表着什么
java·开发语言·c++·面试·kotlin·c#·swift
陌殇殇2 小时前
001 ElasticSearch7.x 、IK分词器、Kibana 环境搭建、安装
java·搜索引擎
天荒地老笑话么2 小时前
Spring MVC数据绑定和响应——简单数据绑定(一)默认类型数据绑定
java·spring·java-ee·mvc