在日常开发中,我们项目的开发环境和生产环境以及测试环境往往是不同的,比如:数据库的url等。在项目上生产环境时,就需要修改这些参数,给开发造成不便。 为了解决该问题,Maven 2.0引入了构建配置文件的概念(build profiles)。
假如你的生产环境和开发环境所需环境配置不同,生产环境配置文件是 pro.properties ,开发环境配置文件是 dev.properties ,那么用maven profile , 你可以实现打包开发环境jar包的时候只将 dev.properties 打包并使用,生产环境打包同理。
它可以在每个项目的 pom.xml 文件中声明,也可以在maven的用户 setting.xml 下声明,也可以在maven全局环境下设置 setting.xml ,详情如下。
Defined in the POM itself ( pom.xml ).
Defined in theMaven-settings ( %USER_HOME%/.m2/settings.xml )
Defined in the global Maven-settings (${maven.home}/conf/settings.xml)
不支持3.0,详情请看: cwiki.apache.org/MAVEN/maven…
虽然有这么多define的方式,但是我们一般使用的是第一种 defined in the pom ,因为不见得每个项目的生产环境都一模一样,当然这个也是因个人情况而异。
├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── fantj │ │ └── resources │ │ └── conf │ │ ├── dev │ │ │ └── application.properties │ │ ├── pro │ │ │ └── application.properties │ │ └── test │ │ └── application.properties │ └── test │ └── java 复制代码
<profiles>
<profile>
<id>dev</id>
<properties>
<profile.env>dev</profile.env>
</properties>
<activation>
<activeByDefault>dev</activeByDefault>
</activation>
</profile>
<profile>
<id>pro</id>
<properties>
<profile.env>pro</profile.env>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profile.env>test</profile.env>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>conf/**</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/conf/${profile.env}</directory>
</resource>
</resources>
</build>
复制代码
dev/application.properties
env=dev db.url=192.168.0.166 db.username=db-dev db.password=db-dev 复制代码
pro/application.properties
env=pro db.url=47.xxx.xxx.xxx db.username=db-pro db.password=db-pro 复制代码
test/application.properties
env=test db.url=127.0.0.1 db.username=db-test db.password=db-test 复制代码
mvn clean install -P pro 复制代码
可以看到只将 pro/application.properties 进行了编译。
如果你喜欢我的文章,那麻烦请关注我的公众号,公众号重点分析架构师技术,该公众号还处于初始阶段,谢谢大家的支持。
java架构
获取架构视频资源(后期还会分享不同的优质资源噢)。