做一个项目呢,都需要开发/测试/生产这不同的环境吧. 不同的环境也就意味着数据库不一样,zk地址不一样,fastdfs地址不一样,redis地址不一样等等. 难道每次移交测试前,我都要把这些配置文件换个遍?maven profile就给我们提供了很大的方便.只需要引用不同的文件夹下即可. 让我带领大家进入maven profile的大门
真实使用场景local本地/ beta联调/ test测试/等等.
在项目对应pom中,可以这么设置
<profiles>
<profile>
<id>local</id>
<build>
<resources>
<resource>
<directory>${profiles.dir}/local</directory>
</resource>
</resources>
</build>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>beta</id>
<build>
<resources>
<resource>
<directory>${profiles.dir}/beta</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>test</id>
<build>
<resources>
<resource>
<directory>src/profiles/test</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>${profiles.dir}/prod</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>schoolprod</id>
<build>
<resources>
<resource>
<directory>${profiles.dir}/schoolprod</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
那么如何来激活profile呢,maven也是提供了多种方式
1.命令行,我们在jenkins自动化构建时,就是采用的这种方式
mvn clean install -P beta
如果你说,我有特殊情况,需要激活两个profile, 那么就这么输入: mvn clean install -P beta,test
2.settings文件显式激活
如果你希望local profile默认一直处于激活状态.那么就可以直接配置setting.xml文件的activeProfiles元素.
<settings>
<activeProfiles>
<activeProfile>local</activeProfile>
</activeProfiles>
</settings>
3.对应pom文件显式激活
我电脑上有很多的项目,我想对于个别项目激活local, 直接idea启动就走local, 那么就直接配置对应pom文件的activProfile元素
<profile>
<id>local</id>
<build>
<resources>
<resource>
<directory>${profiles.dir}/local</directory>
</resource>
</resources>
</build>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
4.系统属性激活
我想配置当某系统属性存在时,自动激活profile,
<profiles>
<profile>
<activation>
<property>
<name>test</name>
</property>
</activation>
</profile>
</profiles>
可以进一步配置,当某系统属性test存在时,且值等于x的时候,激活profile
<profiles>
<profile>
<activation>
<property>
<name>test</name>
<value>x</value>
</property>
</activation>
</profile>
</profiles>
其实可以直接命令声明系统属性
mvn clean install -Dtest=x
5.根据操作系统激活(没搞明白, 路过的清楚可以指导我一下)
6.文件存在与否激活
我想根据某个文件存在与否来决定是否激活profile
<profiles>
<profile>
<activation>
<file>
<missing>x.properties</missing>
<exists>y.properties</exists>
</file>
</activation>
</profile>
</profiles>
这里如果想问,哪个级别最低,那么就是3了,默认激活的这个,只要我用上面其他哪个,3就不管用了.
用户的setting.xml: 用户目录.m2/setting.xml profile对本机上该用户所有的maven项目有效
全局setting.xml: maven 安装目录下conf/setting.xml 对本机上所有maven项目有效