application.properties的Springboot Maven资源筛选



我有一个SpringBoot项目(maven/java 8(。

我想通过Maven过滤src/main/resources/application.properties中的一些自定义变量配置文件(dev.properties|prod.properties(

问题是在target/MyApp/WEB-INF/classes/application中编译后出现的。属性仍然相同,未过滤

Maven命令:

mvn clean package -Pdev

application.properties:

b.token = ${origin.token}

dev.properties:

origin.token = OixxxxxeyJhbGciOiJIiY3ODkwopsdbuerfazdf

prod.properties:

origin.token = epbeoebbrtrryiterzerfeciIxxxxxxxibmFtZS

pom.xml:

<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>

<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
<build>
<filters>
<filter>src/main/conf/filters/${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

这个解决方案对我有效,你可以从Maven-p参数中选择你的配置文件:

Maven命令:

mvn clean package -Pdev

application.properties:

#Active Profile
spring.profiles.active = @mainprofile@

dev.properties:

origin.token = OixxxxxeyJhbGciOiJIiY3ODkwopsdbuerfazdf

prod.properties:

origin.token = epbeoebbrtrryiterzerfeciIxxxxxxxibmFtZS

pom.xml

<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<properties>
<mainprofile>dev</mainprofile>
</properties>
</profile>
<!-- Do the same for prod profile here -->   
</profiles>

最新更新