2017-01-20 9 views
1

У меня есть проект Maven TestNG, который имеет файл свойств, расположенный в src/test/resources. Я хотел параметризовать определенные значения в файле свойств таким образом, чтобы они поступали из аргументов командной строки Maven (i, e mvn clean test -U -DpropertyName = propertyVal, где «$ {propertyName}» существует в файле свойств).Проект Maven TestNG, Замените значение в файле свойств аргументом командной строки Maven

Какие изменения необходимо внести в файл pom.xml для этого?

UPDATE:

Добавление 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> 

UPDATE # 2: Файл свойств (находится в SRC/тест/ресурсы/configuration.properties) содержание ниже:

api.username=${propertyName} 

ответ

0

Существует вещь, называемая фильтрация - https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html.

В основном добавить это к вашей сборке:

<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} 

Попробуйте.

Update

Этот плагин должен быть в вашем ПОМ:

<plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>3.0.2</version> 
     </plugin> 
     ... 
    </plugins> 

И вы должны добавить к вашей команде выполнения Maven:

mvn resources:testResources 
+0

Этот не работало. «$ {PropertyName}» в файле свойств не заменилось после запуска команды, указанной в исходном вопросе. – jsmith

+0

он должен быть testResources в сборке. Виноват. Попробуйте сейчас –

+0

Пробовал снова, и он все еще не работал. Я также удалил тег «resources» из pom. – jsmith

 Смежные вопросы

  • Нет связанных вопросов^_^