1 profiles配置测试环境
1.1作用
根据不同测试环境,赋予<properties>指定变量不同的值。
1.2 配置
1. 实现效果
加载如下测试环境下的*.properties文件
2. pom.xml
(1)在<profiles>中定义了dev和prod两个环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<profiles> <profile> <id>dev</id> <properties> <deploy.type>dev</deploy.type> </properties> </profile> <profile> <id>prod</id> <properties> <deploy.type>prod</deploy.type> </properties> <!--默认配置--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> </profiles> |
(2)配置<build>中的<resources>
1 2 3 4 5 6 7 8 9 10 |
<build> <resources> <resource> <directory>src/main/profiles/${deploy.type}</directory> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> |
这样在运行时就可以将指定测试环境下*.properties文件加入到resource中了。
(3)指定测试环境的mvn命令举例如下:
1 |
mvn clean compile -Pdev |
3. 在上面的例子中,<profile>中定义了<properties>,而在pom.xml中也可以直接使用<properties>来指定一些变量的值。这两者的区别是什么?
在pom.xml中直接使用<properties>来指定变量的值在任何测试环境都是一样的。而在<profile>中的<properties>指定的变量是只在相应的测试环境下才是有效的。
1.3 相关属性
1. resouces 中 exclude配置作用:就是排除这些文件,不进行加载。如下配置
1 2 3 4 5 6 7 8 9 10 |
<resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>*.properties</exclude> <exclude>db/*</exclude> <exclude>mybatis-generator/*</exclude> </excludes> </resource> </resources> |
1.4 实例
具体一个配置实例,可以参考
2 Maven的filtering和filters
1. filtering
1 2 3 4 5 6 7 8 9 |
<build> <resources> <resource> <directory>xxx/</directory> <filtering>true</filtering> </resource> </resources> ...... </build> |
就是xxx/目录下面的 pom.xml或者aa.properties中${变量}替换成系统变量的值。如pom.xml中
1 2 3 |
<properties> <user.home>${env.HOME}</user.home> </properties> |
此时查看系统变量为
1 2 |
$ env | grep HOME HOME=/home/me |
此时编译之后上述pom.xml配置的值就好变成
1 |
<user.home>/home/me</home> |
2. filters
filters是为了配合filtering使用的。在filtering中都是用系统环境变量来替换,如果我们此时有很多变量值,那么此时可以将这些变量的值放到一个xx.properties中,然后通过filters来加载
1 2 3 4 5 6 7 8 9 10 11 12 |
<profiles> <profile> <id>dev</id> <build> <filters> <filter>profiles/dev/xx.properties</filter> </filters> </build> </profile> ... </profiles> |
此时就可以在执行mvn clean compiel -Pdev指定这个测试环境时加载这个xx.propertis。用这个xx.properties来替换使用了<filtering>true</filters>的resouce下面的文件中变量值。
3. 作用
可以实现在不同测试环境加载不同的属性键值对。
注意:<filters>只是用来实现的加载键值对,为filtering提供替换键值对集合,并不是加载文件。<profile>用来实现在不同测试环境加载某一个文件。