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 Переключатель влияет на обе цели.

Другие вопросы по тегам