maven profile 配置

看看哪个适合你的使用场景,这两个是不一样的使用场景,具体细节点击上面的链接。

application.yml文件存放通用配置。下面三个文件分别对应,开发,测试,生产环境

application-dev.yml application-uat.yml application-prod.yml

都在resource目录下面。

1, application.yml

spring:
profiles:
active:
#打包时需要修改此属性,需区分引用dev uat prod等环境的配置文件
- @profileActive@

2, pom.xml

<!--配置多环境打包-->
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<build.profile.id>dev</build.profile.id>
<profileActive>dev</profileActive>
</properties>
<activation>
<!--如果不指定,则默认使用dev开发环境配置-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 测试环境-->
<profile>
<id>uat</id>
<properties>
<build.profile.id>uat</build.profile.id>
<profileActive>uat</profileActive>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<build.profile.id>prod</build.profile.id>
<profileActive>prod</profileActive>
</properties>
</profile>
</profiles>

<build>
<!-- profile对资源的操作 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<!--在打包的时候先去掉所有的yml文件-->
<exclude>application*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 是否替换@xx@表示的maven properties属性值 -->
<filtering>true</filtering>
<!--在打包的时候,根据-P参数,加上需要的yml配置文件-->
<includes>
<include>application.yml</include>
<include>application-${profileActive}.yml</include>
</includes>
</resource>
</resources>
<plugins>

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

3, 打包命令

// -P 后面的uat、prod、dev会自动打包相应的配置文件到jar包中。
mvn clean install -DskipTests -P uat

4, 结论,

maven profile 是在build time 生成,生成的jar包是不一样的。

网上看的,适用于由于生产环境、测试环境,开发环境的服务器配置不同。