Maven实现不同环境配置文件多环境打包
前言
项目有开发、测试、生产至少有这三个环境,所需要的配置信息肯定不一样,所以打包的时候可以指定使用哪一个配置文件。
#app.properties
app.id=${app.id}
apollo.bootstrap.enabled=${apollo.bootstrap.enabled}
apollo.meta=${apollo.meta}
apollo.bootstrap.namespaces=${apollo.bootstrap.namespaces}
#application-${env}.properties
app.id=xxx
apollo.bootstrap.enabled=xxx
apollo.meta=xxx
apollo.bootstrap.namespaces=xxx
如测试环境使用:mvn clean package -Ptest,这时候的{}中的参数将会被application-test.properties对应参数替换
配置pom信息
pom.xml
<build>
<filters>
<filter>src/main/resources/application-${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>test</id>
<properties>
<env>test</env>
<fName>test</fName>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
<fName>dev</fName>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
<fName>prod</fName>
</properties>
</profile>
</profiles>
打包
mvn clean package -Pdev
说明
profiles 定义了各个环境的变量 id , filters 中定义了变量配置⽂件的地址,其中地址中的环境变量就是上⾯ profile 中定义的值, resources 中是定义哪些⽬录下的⽂件会被配置⽂件中定义的变 量替换。 通过maven可以实现按不同环境进⾏打包部署,例如:mvn package -Pdev -Dmaven.test.skip=true 表示打包本地环境,并跳过单元测试