概念理解:
- profile:profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
- resources:resources是指定maven编译资源文件指定到何处。filtering:开启过滤,用指定的参数替换directory下的文件中的参数(eg. ${name}),directory:指定资源文件的位置。
- filters:可以理解为筛选器或者填充器,filters里面可以配置多个filter,但是会以最后一个为准,所以一般只配置一个filter。使用filter的参数填充resources中的directory下的文件中的${xxx}占位符
主要的实现方法:
利用resources和filter,实现对配置文件的动态赋值
利用profile进行filters文件的切换控制
实现步骤:
1、创建目标配置文件,在目标文件中使用${xxx}进行属性引用
env.properties
#Environment
environment=${environment}
api.host=${api.host}
2、在main/filters目录下创建filter文件,filter-debug.properties、filter-dev.properties、filter-product.properties,其中使用预设的环境参数
#Environment
environment=pro
api.host=https://baidu.com/
3、配置POM,完成resources、filters的配置以及插件的配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<!--扫描替换参数的文件路径-->
</resource>
</resources>
<!--配置filter指向的文件,其中${env}为使用profile进行文件控制-->
<filters>
<filter>src/main/filters/filter-${env}.properties</filter>
<!--环境过滤器的配置方式,回头需要在该路径下建立对应文件-->
</filters>
<plugins>
<plugin>
<!--该插件是解决命令下执行mvn test指定testng xxx.xml 文件 的配置-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<!--为了解决在jenkins maven执行test 报告乱码问题,编码格式设置为UTF-8-->
<argLine>-Dfile.encoding=UTF-8</argLine>
<encoding>UTF-8</encoding>
<!--动态指定执行的xml文件。${project.basedir}项目目录,${xmlFileName}maven文件-->
<suiteXmlFiles>
<!-- <suiteXmlFile>${project.basedir}/target/classes/testNg/${xmlFileName}</suiteXmlFile>-->
<!--在IEDA上运行maven test命令时,可打开该注释使用完整测试集合-->
<!--<suiteXmlFile>${project.basedir}/target/classes/testNg/api/APICollection-TestSuite.xml</suiteXmlFile>-->
</suiteXmlFiles>
</configuration>
</plugin>
<!--maven-compiler-plugin 插件是来对 Java 代码编译的,指定jdk版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
4、配置profile
<profiles>
<!-- 开发环境,默认激活 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<!-- 生产环境 -->
<profile>
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
<!-- 测试环境 -->
<profile>
<id>fat</id>
<properties>
<env>fat</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault><!--默认启用的是fat环境配置-->
</activation>
</profile>
</profiles>