Как избежать многократного запуска тестов при интеграции проекта maven в hudson / jenkins - PullRequest
1 голос
/ 27 марта 2012

Я интегрировал в Hudson проект maven 3, вызывающий следующую последовательность:

clean tomcat:redeploy site sonar:sonar

Проблема в том, что JUnit запускается 3 раза, вот последовательность целей, которую я получаю:

>[INFO] [clean:clean {execution: default-clean}]  
>[INFO] [gwt:i18n {execution: default}]  
>[INFO] [gwt:generateAsync {execution: default}]  
>[INFO] [resources:resources {execution: default-resources}]  
>[INFO] [compiler:compile {execution: default-compile}]  
>[INFO] [checkstyle:check {execution: mycom-check}]  
>[INFO] [checkstyle:check {execution: extended-check}]  
>[INFO] [resources:copy-resources {execution: default}]  
>[INFO] [gwt:i18n {execution: default}]  
>[INFO] [gwt:generateAsync {execution: default}]  
>[INFO] [resources:resources {execution: default-resources}]  
>[INFO] [compiler:compile {execution: default-compile}]  
>[INFO] [checkstyle:check {execution: mycom-check}]  
>[INFO] [checkstyle:check {execution: extended-check}]  
>[INFO] [resources:copy-resources {execution: default}]  
>[INFO] [resources:testResources {execution: default-testResources}]  
>[INFO] [compiler:testCompile {execution: default-testCompile}]  
>[INFO] **[surefire:test {execution: default-test}]**  
>[INFO] [gwt:compile {execution: default}]  
>[INFO] [war:war {execution: default-war}]  
>[INFO] [***tomcat:redeploy*** {execution: default-cli}]  
>[INFO] [gwt:i18n {execution: default}]  
>[INFO] [gwt:generateAsync {execution: default}]  
>[INFO] [resources:resources {execution: default-resources}]  
>[INFO] [compiler:compile {execution: default-compile}]  
>[INFO] [checkstyle:check {execution: mycom-check}]  
>[INFO] [checkstyle:check {execution: extended-check}]  
>[INFO] [resources:copy-resources {execution: default}]  
>[INFO] [cobertura:instrument {execution: default-instrument}]  
>[INFO] [cobertura:instrument {execution: default-instrument}]  
>[INFO] [resources:testResources {execution: default-testResources}]  
>[INFO] [compiler:testCompile {execution: default-testCompile}]  
>[INFO] **[surefire:test {execution: default-test}]**  
>[INFO] [cobertura:cobertura {execution: default-cli}]  
>[INFO] [resources:testResources {execution: default-testResources}]  
>[INFO] [compiler:testCompile {execution: default-testCompile}]  
>[INFO] [surefire:test {execution: default-test}]  
>[INFO] [***site:site*** {execution: default-site}]  
>[INFO]    task-segment: [sonar:sonar] (aggregator-style)  
>[INFO] [sonar:sonar {execution: default-cli}]  
>[INFO] [***sonar:sonar*** {execution: default-sonar}]  
>[INFO] [gwt:i18n {execution: default}]  
>[INFO] [gwt:generateAsync {execution: default}]  
>[INFO] [resources:resources {execution: default-resources}]  
>[INFO] [compiler:compile {execution: default-compile}]  
>[INFO] [checkstyle:check {execution: mycom-check}]  
>[INFO] [checkstyle:check {execution: extended-check}]  
>[INFO] [resources:copy-resources {execution: default}]  
>[INFO] [cobertura:instrument {execution: default-instrument}]  
>[INFO] [resources:testResources {execution: default-testResources}]  
>[INFO] [compiler:testCompile {execution: default-testCompile}]  
>[INFO] **[surefire:test {execution: default-test}]**  
>[INFO] [cobertura:cobertura {execution: default-cli}]  

Это очень проблематично, так как ошибка в Гудзоне заставляет его считать 3 три раза: http://issues.hudson -ci.org / просмотр / HUDSON-1557
Однако это выглядело исправлено в Дженкинс: https://issues.jenkins -ci.org / browse / JENKINS-2068

Что меня удивило, так это то, что юнит-тест "cobertura" выполняется дважды. Я новичок в Maven, поэтому я не уверен, что хорошо понимаю резолюцию "шаги жизненного цикла". В муравье целевые разрешения выполнялись таким образом, чтобы выполнять только один раз для каждой цели. Мои вопросы:

  • Почему эти юнит-тесты Cobertura выполняются дважды? есть дефект в моем конфиге, в Maven, в плагине?
  • Что я могу проверить, чтобы попытаться понять?
  • В общем, есть ли какая-либо команда Maven, доступная для предварительного просмотра последовательности, которая будет выполнена без реального исполнения? Я не нашел ничего об этом, но нашел бы это очень полезным.

Спасибо за советы.

1 Ответ

0 голосов
/ 28 марта 2012

Почему эти модульные тесты Cobertura выполняются дважды? это дефект в моем конфиг, в мавене, в плагине?

Оба tomcat:redeploy и sonar:sonar работают под управлением cobertura. Это проблема конфигурации maven, которую можно исправить.

Что я могу проверить, чтобы попытаться понять?

В общем, вы можете запустить каждую цель отдельно, чтобы увидеть, что она делает.

В общем, есть ли какая-либо команда Maven, доступная для предварительного просмотра последовательности, которая будет выполнена без реального исполнения? Я не нашел ничего об этом, но нашел бы это очень полезным.

Обычно в документации каждой цели указываются фазы жизненного цикла, которые выполняются для этой цели. В maven нет опции dry-run.

...