【Java】springboot多环境打包时如何只打包当前环境的配置文件

1.springboot工程里面有application.properties和application-dev.properties和application-prod.properties这些文件。

其中application.properties中可以进行环境切换

spring.profiles.active=dev

现在我使用下面的参数进行打包,但打包后的文件中始终都含有这三个配置文件。

mvn clean package -Dmaven.test.skip=true -Dprofiles.active=dev

mvn clean package -Dmaven.test.skip=true -Pprod

【Java】springboot多环境打包时如何只打包当前环境的配置文件

而实际上我想要的效果是开发环境就只打包一个配置文件。请问该如何操作呢?

回答

在资源文件夹下建三个文件夹, 分别对应放置各自的application.properties文件

src/main/resources/dev/application.properties

src/main/resources/test/application.properties

src/main/resources/pro/application.properties

在pom.xml里先定义三个profile

    <profiles>

<profile>

<!-- 本地开发环境 -->

<id>dev</id>

<properties>

<profiles.active>dev</profiles.active>

<modifier></modifier>

</properties>

<activation>

<activeByDefault>true</activeByDefault> <!-- 默认的,不加参数时执行这个profile -->

</activation>

</profile>

<profile>

<!-- 测试环境 -->

<id>test</id>

<properties>

<profiles.active>test</profiles.active>

<modifier>-test</modifier>

</properties>

</profile>

<profile>

<!-- 生产环境 -->

<id>pro</id>

<properties>

<profiles.active>pro</profiles.active>

<modifier>-pro</modifier>

</properties>

</profile>

</profiles>

在build的标签下, 先排除全部,再添加当前通过-P参数激活的profile:

    <build>

<resources>

<resource>

<directory>src/main/resources</directory>

<!-- 资源根目录排除各环境的配置,防止在生成目录中多余其它目录 -->

<excludes>

<exclude>test/*</exclude>

<exclude>pro/*</exclude>

<exclude>dev/*</exclude>

</excludes>

</resource>

<resource>

<directory>src/main/resources/${profiles.active}</directory>

</resource>

</resources>

最后,编译时加-P参数即可, 如:

mvn -Ppro package

以上是 【Java】springboot多环境打包时如何只打包当前环境的配置文件 的全部内容, 来源链接: utcz.com/a/88675.html

回到顶部