企业开发环境通常会有多套,有开发环境,测试环境,预发布环境,生产环境,还有一种叫法是staging环境,sit环境,prep环境,production环境。在不同环境下通唱需要使用一些不同的配置,那么怎样做到这些配置相互独立,而且方便替换呢,maven提供的profile配置就可以实现。
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>production</id>
<properties>
<env>production</env>
</properties>
</profile>
</profiles>
...
<build>
<filters>
<filter>../parent/src/main/filters/filter-${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.ftl</exclude>
<exclude>**/*-dynamic.xml</exclude>
<exclude>**/mybatis/**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
在执行 mvn package -P dev的时候,会对resource下的directory所配置的目录,使用filter中的dev.properties进行变量替换。
其中会排除excludes下配置的文件。