#java #maven #maven-3 #maven-plugin
#ява #мавен #мавен-3 #maven-плагин #java #maven #maven-3
Вопрос:
Я создал плагин maven, и я хочу запустить плагин с помощью командной строки, ничего не меняя (например, pom.xml ) в эталонном проекте. В настоящее время я использую mvn groupId:artifactId:version:goal test
(я хочу запустить свой плагин вместе с тестом). Но вот в чем проблемы:
-
Я не знаю, как настроить мой плагин с помощью командной строки. Например, если изменение pom разрешено, существует множество пользовательских конфигураций для настройки
<configuration>
, таких как:<plugin> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <configuration> <debug>true</debug> <packageNamePrefix>com/foo/bar</packageNamePrefix> </configuration> <executions> <execution> <goals> <goal>...</goal> </goals> </execution> </executions> </plugin>
Как использовать командную строку для настройки этих атрибутов в
<configuration>
? -
Я хочу запустить свой плагин на определенном этапе (в частности, в
LifecyclePhase.PROCESS_TEST_CLASSES
). Например, мой класс mojo реализован следующим образом:@Mojo(name = "goal", defaultPhase = LifecyclePhase.PROCESS_TEST_CLASSES, requiresDependencyResolution = ResolutionScope.TEST, threadSafe = true) @Execute(phase = LifecyclePhase.PROCESS_TEST_CLASSES) public class myMojo extends MyAbstractMojo { ... }
Когда я использую
mvn groupId:artifactId:version:goal test
илиmvn test groupId:artifactId:version:goal
, я, к сожалению, обнаружил, что мой плагин был запущен в неправильной фазе. Как это исправить? Есть ли способ явно объявить фазу желания в этих командных строках?
Ответ №1:
По первому вопросу:
Вы можете прочитать свойства в своем плагине и задать свойства в командной строке с помощью -Dproperty=value
.
По второму вопросу:
Если вы вызываете плагин в командной строке напрямую (как groupId:artifactId:version:goal
), он не принадлежит какой-либо фазе. Итак, если вы запустите
mvn groupId:artifactId:version:goal test
сначала запускается плагин, а затем все этапы от начала до test
, и если вы запустите
mvn test groupId:artifactId:version:goal
затем сначала выполняются все этапы до test
, а затем запускается ваш плагин.
Вы не можете указать фазы для плагинов в командной строке.
Комментарии:
1. Есть ли способ выполнить мою цель плагина на этом этапе
PROCESS_TEST_CLASSES
? Я думаю, чтоPROCESS_TEST_CLASSES
это промежуточная фазаtest
.2. Да, но только путем добавления вашего плагина в POM.
3. Если вы хотите запустить свой плагин между другими плагинами, которые запускаются при вашем вызове
mvn test
, то вам, вероятно, придется вызывать все плагины явно, т.Е.mvn firstpluging yourplugin secondplugin
вместо использованияtest
.