#java #maven #build #maven-3 #maven-plugin
#java #maven #сборка #maven-3 #maven-плагин
Вопрос:
Я пытаюсь понять порядок выполнения цели maven.
Итак, у меня есть pom, который привязывает maven-antrun-plugin
run
цель к clean
фазе сборки жизненного цикла maven.
При запуске mvn clean
я получаю результат, как показано в разделе вывода:
Теперь мои вопросы:
1 почему maven-clean-plugin:2.4.1:clean (default-clean)
цель была выполнена так, как я прикрепил, какую цель запустить, т.е. pre-process-classes
.. итак, добавляется ли моя цель в список целей по умолчанию, который есть у maven, или она может быть переопределена? в принципе, как maven решает, какую цель выполнить?
2 В разделе плагинов у меня есть только artifactId
и version
, но нет groupId
. итак, как maven нашел правильный плагин?. разве groupId не нужен?
Вывод
--- maven-clean-plugin:2.4.1:clean (default-clean) @ second_third ---
Deleting D:tmpmavenfirst_secondtarget
--- maven-antrun-plugin:1.1:run (pre-process-classes) @ second_third ---
Executing tasks
echo] Build Dir: D:tmpmavenfirst_secondtarget
pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>my.second_third_maven</groupId>
<artifactId>second_third</artifactId>
<version>1.1.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>pre-process-classes</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Build Dir: ${project.build.directory}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Ответ №1:
Чтобы ответить на 2-й вопрос:
By default, Maven will search the groupId org.apache.maven.plugins
for prefix-to-artifactId mappings for the plugins it needs to
perform a given build.
http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html
раздел «Настройка Maven для поиска плагинов»