Spring boot项目分环境Maven打包,动态配置文件,动态配置项目
Spring boot Maven 项目打包
使用Maven 实现多环境 test dev prod 打包
项目的结构
在下图中可用看出,我们打包时各个环境需要分开,采用 application-环境.yml 的方式命名
环境配置开始
首先我们需要在application.yml文件中配置 spring.profiles.active = @profileActive@这里的proofileAction 是我们下面要用到的变量
spring:
profiles:
active: @profileActive@
pom.xml
我们需要在pom中指定finalname的名称,当然对于打包来说名称并不影响。
实际上 不配置 resources节点也是可以的,在pom添加只是为了在打包中少几个配置文件。
当然你可以通过include来选择需要导入哪个文件。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!-- 打包后文件名称:项目名-环境-版本 --> <finalName>${project.artifactId}-${profileActive}-${project.version}</finalName> <resources> <resource> <directory>src/main/resources</directory> <!-- 开启过滤替换功能--> <filtering>true</filtering> <includes> <!-- 项目打包完成的包中只包含当前环境文件 --> <include>application.yml</include> <include>application-${profileActive}.yml</include> </includes> </resource> </resources> </build> <!-- 多环境配置方案 --> <profiles> <profile> <id>dev</id> <properties> <profileActive>dev</profileActive> </properties> <activation> <!-- 默认情况下使用dev开发配置 如 打包时不包含 -p 参数--> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- 打包命令package -P test --> <profile> <id>test</id> <properties> <profileActive>test</profileActive> </properties> </profile> <!-- 打包命令package -P prod --> <profile> <id>prod</id> <properties> <profileActive>prod</profileActive> </properties> </profile> </profiles>
在pom中profiles节点才是分项目打包的关键,通过profile节点可以在打包时动态的去更新我们在application.xml中的配置值
在编译项目时,可以使用 -P 参数指定需要使用的 profile 的 id,比如下面命令将会使用 dev profile:
mvn clean package -P dev
如果想使用test,只需要改为以下即可
mvn clean package -Ptest
假如不指定 -P 参数的话,则会使用 activeByDefault=true 的一项(即 dev)。
原文:https://blog.csdn.net/qq_22327273/article/details/83548138
参考文档:
LuckyZhouStar Maven中profile和filtering实现多个环境下的属性过滤