2013-10-02 3 views
3

Я хочу сделать тестирование для разных папок в проекте maven, и мне нужно изменить свойство maven project.build.testSourceDirectory.Maven project.build.testSourceDirectory свойство не работает из профиля

Я использую профиль maven для решения этой проблемы.

Мой профиль выглядит следующим образом:

<profiles> 
    <profile> 
     <id>sahi_UI_testing</id> 
     <activation> 
      <property> 
       <name>sahiTesting</name> 
       <value>true</value> 
      </property> 
     </activation> 
     <properties> 
      <maven.test.skip>false</maven.test.skip> 
      <project.build.testSourceDirectory>src/test/java/org/package1/package2/sahi</project.build.testSourceDirectory> 
     </properties> 
    </profile> 
</profiles> 

project.build.testSourceDirectory не изменяется, остается только по умолчанию /home/username/workspace/projectName/core/src/test/java (я проверил это с maven-antrun-plugin и дает этому пути).
У меня есть несколько pom.xml в проектах, поэтому в пути у меня есть папка ../core/ .. (это основной pom.xml проекта).


The Maven-antrun-плагин:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.1</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
        <echo>******** Displaying value of property ********</echo> 
        <echo>${project.build.testSourceDirectory}</echo> 
        <echo>${maven.test.skip}</echo> 
       </tasks> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 


Выполнение mvn help:active-profiles -f core/pom.xml -Dtest=JavaClientTest -o -e test -DsahiTesting=true с <maven.test.skip>true</maven.test.skip> в maven-antrun-plugin это дает мне:
[INFO] Выполнение задачи
[Эхо] * * Отображение стоимости имущества * *
[эхо]/главная/имя пользователя/рабочее пространство/Projectname/ядро ​​/ SRC/тест/Java
[эхо] верно

и <maven.test.skip>false</maven.test.skip> в maven-antrun-plugin это дает мне:
[INFO] Выполнение задач
[эхо] * * Отображение стоимости имущества * *
[эхо]/главная/имя пользователя/рабочее пространство/Projectname/ядро ​​/ SRC/тест/Java
[эхо] ложные

Итак, мы видим, что другая переменная была изменена.

Я знаю, что профиль активирован, потому что я использовал maven-help-plugin, чтобы определить это.
maven-help-plugin дает мне этот результат:
следующие профили активны:

  • sahi_UI_testing (источник: ПОМ)

Я пытался без профиля Maven, чтобы изменить project.build.testSourceDirectory Недвижимость только в <build> тег.

... 
<build> 
    <testSourceDirectory>src/test/java/org/package/package2/sahi</testSourceDirectory> 
    ... 
</build> 

Там собственность была изменена (но мне нужно назначить более одного значения для этого свойства). Я пробовал maven-surefire-plugin и не работает.

Вопрос в том, почему project.build.testSourceDirectory не изменяется при использовании профиля?

ответ

5

Я нашел не очень хорошее решение этого вопроса, но это решение. Для меня он работает, и он изменяет переменную testSourceDirectory.

В файле pom.xml я объявил собственную переменную в properties тег инициализирована значением по testSourceDirectory «s по умолчанию:

<project ...> 
    ... 
    <properties> 
     <myTestSourceDirectory>${project.basedir}/src/test/java</myTestSourceDirectory> 
     ... 
    </properties> 
    ... 
</project> 

Мой профиль является:

<profiles> 
    <profile> 
     <id>sahi_UI_testing</id> 
     <activation> 
      <property> 
       <name>sahiTesting</name> 
       <value>true</value> 
      </property> 
     </activation> 
     <properties> 
      <maven.test.skip>false</maven.test.skip> 
      <myTestSourceDirectory>src/test/java/org/<package1>/<package2>/sahi</myTestSourceDirectory> 
     </properties> 
    </profile> 
</profiles> 

В начале build tag Я установил testSourceDirectory на

<project ...> 
    <build> 
     <testSourceDirectory>${myTestSourceDirectory}</testSourceDirectory> 
     ... 
    <build> 
    ... 
</project> 

Итак, когда мы не используем профиль, мы имеем значение по умолчанию для переменной myTestSourceDirectory, и когда мы используем профиль, переменная будет изменена на требуемый каталог тестирования. Переменная всегда существует, а в теге build мы меняем свойство testSourceDirectory на нужное значение.

0

Вы не можете перезаписать модель project со свойствами, Maven не позволяет этого. Единственный вариант, который у вас есть, - это указать testSourceDirectory в плагине, который вы хотите использовать (при условии, что он доступен).

+0

Теперь я понял, что не могу перезаписать модель 'project' внутри свойств. Я пробовал этот плагин ('maven-surefire-plugin'), но он не работает. Я прочитал в Интернете тот факт, что «testSourceDirectory» плагина не работает и для других разработчиков. –

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