2015-05-20 4 views
0

Вот сгущенное фрагмент pom.xml из моего проектали профиль maven, сконфигурированный для выполнения фазы интеграции во время жизненного цикла сборки?

<profiles> 

      <profile> 
       <id>run-tests</id> 
       <build> 
        <plugins> 
         <plugin> 
          <groupId>com.google.code.maven-replacer-plugin</groupId> 
          <artifactId>replacer</artifactId> 
          <version>1.5.2</version> 
          <executions> 
           <execution> 
            <phase>pre-integration-test</phase> 
            <goals> 
             <goal>replace</goal> 
            </goals> 
           </execution> 
          </executions> 
          <configuration> 
           <includes> 
            ...... 
           </includes> 

           <replacements> 
            <replacement> 
             ....... 
            </replacement> 
           </replacements> 
          </configuration> 
         </plugin> 

        <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-failsafe-plugin</artifactId> 
          <version>2.18.1</version> 
          <configuration> 
           ...... 
          </configuration> 
          <executions> 
           <execution> 
            <goals> 
             <goal>integration-test</goal> 
             <goal>verify</goal> 
            </goals> 
            <phase>integration-test</phase> 
           </execution> 
          </executions> 
         </plugin> 
        </plugins> 
    </build> 
</profile> 
</profiles> 

У меня есть два вопроса:

1), когда я исполняю mvn clean package -Prun-tests, что происходит? Я ожидал, что ни один из этих целей плагина не будет выполнен здесь, потому что они связаны с фазой integration-test. Но я вижу, что эти цели были выполнены?

2) Что делает два мяча в execution блоком среднего? не смотрите выше в failsafe-plugin

Благодаря

ответ

1

частичный ответ:

1) No Way. Если у вас также нет этих плагинов, настроенных в разделе основной сборки, которые будут выполняться поэтапно до пакета.

Как вы определили, что запущены плагины? У вас есть что-то вроде следующего в выводе maven?

[INFO] --- Maven-безотказный-плагин: 2.18.1: интеграция-тест (по умолчанию)

[INFO] --- Maven-безотказный-плагин: 2.18.1: проверить (по умолчанию)

2) Это означает, что две цели (mojos) будут выполнены на этапе интеграции. Сначала цель интеграции-теста, за которой сразу следует цель проверки.

Комментарий: цель интеграции-теста по умолчанию связана с фазой интеграции, тогда как цель проверки привязана к фазе проверки. Таким образом, вы могли бы сконфигурировать отказоустойчивый Plugin таким образом:

<executions> 
     <execution> 
     <goals> 
      <goal>integration-test</goal> 
      <goal>verify</goal> 
     </goals> 
     </execution> 
    </executions> 

Обратите внимание, что фаза опущена

+0

что делает наличие 'verify' цель без фазы означает? –

+0

для точки 1 - вы имеете в виду, что профиль не влияет на запуск 'mvn clean package -prun-tests'? –

+0

проверить цель без фазы означает, что цель проверки выполняется в фазе проверки (к которой она привязана по умолчанию) –