我有一个Maven TestNG项目,它有一个位于src / test / resources中的属性文件。我想参数化属性文件中的某些值,使它们来自Maven命令行参数(i,e mvn clean test -U -DpropertyName = propertyVal,其中" $ {propertyName}"存在于属性文件)。
我需要在pom.xml文件中进行哪些更改才能完成此操作?
更新:
添加pom.xml,以便人们可以看到我正在使用的内容。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Test_Automation</groupId>
<artifactId>TA_ID</artifactId>
<version>1.0-SNAPSHOT</version>
<name>T_QE</name>
<properties>
<jdk.version>1.8</jdk.version>
<maven-surefire-version>2.19.1</maven-surefire-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<src.dir>src/main/java</src.dir>
<test.dir>src/test/java</test.dir>
<test.resources>src/test/resources</test.resources>
</properties>
<build>
<testResources>
<testResource>
<directory>${test.resources}</directory>
<filtering>true</filtering>
</testResource>
</testResources>
<sourceDirectory>${src.dir}</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-version}</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>target/test-classes/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<propertyName>${propertyName}</propertyName>
</properties>
</profile>
</profiles>
更新#2: 属性文件(位于src / test / resources / configuration.properties)的内容如下:
api.username=${propertyName}
答案 0 :(得分:0)
有一种叫做过滤的东西 - docs。
基本上你将它添加到你的构建中:
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
然后在你的个人资料中你会做:
<profile>
<id>myprofile</id>
...
<properties>
<propertyName>${propertyName}</propertyName>
</properties>
</profile>
假设您的.properties文件中包含:
myProperty = ${propertyName}
尝试一下。
<强>更新强>
这个插件必须在你的pom中:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
...
</plugins>
您应该将此添加到您的maven执行命令:
mvn resources:testResources