我有一个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>