Maven цели делают анализ и установку cobertura
Я использую Jenkins
а также Maven
построить несколько проектов Java. Дополнительно я пользуюсь Cobertura
для анализа покрытия. Поэтому я настроил задание сборки Jenkins Maven и настроил следующие цели:
clean cobertura:cobertura
Это хорошо работает для анализа покрытия, но не генерирует никакого вывода jar, настроенного в POM. Я думаю, что это так, потому что цель Maven package
не в жизненном цикле Cobertura.
Для получения файлов JAR я попытался изменить его на
clean cobertura:cobertura install
Это делает работу, но есть другая проблема: каждая цель от resources
в test
выполняется дважды:(Вывод на консоль выглядит так (удалены строки детализации)
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ HelloWorld ---
[INFO] >>> cobertura-maven-plugin:2.7:cobertura (default-cli) > [cobertura]test @ HelloWorld >>>
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ HelloWorld ---
[INFO] --- cobertura-maven-plugin:2.7:instrument (default-cli) @ HelloWorld ---
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ HelloWorld ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ HelloWorld ---
[INFO] <<< cobertura-maven-plugin:2.7:cobertura (default-cli) < [cobertura]test @ HelloWorld <<<
[INFO] --- cobertura-maven-plugin:2.7:cobertura (default-cli) @ HelloWorld ---
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ HelloWorld ---
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ HelloWorld ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ HelloWorld ---
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ HelloWorld ---
[INFO] --- maven-install-plugin:2.4:install (default-install) @ HelloWorld ---
Есть ли способ использовать install
используя результаты фаз resources
в test
отcobertura
?
Другими словами, вывод
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ HelloWorld ---
[INFO] >>> cobertura-maven-plugin:2.7:cobertura (default-cli) > [cobertura]test @ HelloWorld >>>
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ HelloWorld ---
[INFO] --- cobertura-maven-plugin:2.7:instrument (default-cli) @ HelloWorld ---
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ HelloWorld ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ HelloWorld ---
[INFO] <<< cobertura-maven-plugin:2.7:cobertura (default-cli) < [cobertura]test @ HelloWorld <<<
[INFO] --- cobertura-maven-plugin:2.7:cobertura (default-cli) @ HelloWorld ---
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ HelloWorld ---
[INFO] --- maven-install-plugin:2.4:install (default-install) @ HelloWorld ---
Дополнительная информация: смена POM не возможна, потому что я ими не управляю.
1 ответ
Краткий ответ: нет. Используя метод проб и ошибок, я наконец нашел решение, с которым нужно жить:
Оставляя Maven цели, такие как
clean cobertura:cobertura
и добавление шага пост-сборки для выполнения цели Maven
install -Dmaven.test.skip=true
Таким образом, тесты не выполняются дважды. compile
и подобное выполняется дважды, но это не так уж и плохо, потому что Cobertura уже скомпилировал все, заставив Maven пропустить этот шаг.
Примечание: clean cobertura:cobertura install -Dmaven.test.skip=true
невозможно, потому что test.skip
Переключатель влияет на обе цели.