#maven
#maven
Вопрос:
Я хотел бы запускать одну цель плагина Maven (jacoco: dump) при каждой сборке Maven моего проекта, независимо от фазы сборки, и это должна быть последняя выполненная цель.
Одна идея, которую я бы реализовал, — связать цель jacoco: dump с фазой компиляции, чтобы выполнять ее при каждой сборке, но тогда было бы невозможно выполнить дамп как последнюю цель последней фазы.
Порядок выполнения
validate -> compile -> (any other phase and plugin goal execution) -> jacoco:dump
Так что, если я создаю с mvn verify
, jacoco:dump
может быть выполнено после фазы проверки; если я создаю с mvn compile
jacoco:dump
, может быть выполнено после фазы компиляции и т.д.
Есть ли какой-нибудь способ решить эту проблему с помощью Maven?
Спасибо
Ответ №1:
Один (хакерский) подход заключался бы в том, чтобы каждый раз передавать фазу как свойство. Что-то вроде:
<execution>
<id>jacoco</id>
<phase>${phase}</phase>
<goals>
<goal>dump</goal>
</goals>
</execution>
Вызов с mvn compile -Dphase=compile
помощью или mvn test -Dphase=test
и т. Д. Вероятно, не самое элегантное решение, но довольно простое в реализации.
Комментарии:
1. Спасибо. И что вы думаете, если я использую непосредственно цель плагина? Нравится
mvn test jacoco:dump
. Как указано здесь , порядок выполнения — это тот, который указан в командной строке, поэтому, если я выполнюjacoco:dump
все требуемые этапы, возможно, у меня есть решение. Что вы думаете?2. Да, это звучит лучше!
Ответ №2:
Решение простое, но эффективное. Мы можем запустить цель плагина непосредственно из командной строки, не настраивая ее в project pom. Как указано в официальной документации, при запуске нескольких целей из командной строки они выполняются в заданном порядке, поэтому мне нужно только поместить плагин jacoco в конец команды:
mvn compile org.jacoco:jacoco-maven-plugin:0.7.7.201606060606:dump sonar:sonar
Приведенный выше пример сначала компилируется, затем выполняется jacoco:dump
, затем выполняется sonar:sonar