Ответ 1
Вы можете сделать это, указав настраиваемый жизненный цикл и вызывая этот жизненный цикл до того, как ваш Mojo будет выполнен с помощью аннотации execute
.
В вашем Mojo объявите в Javadoc жизненный цикл, который будет выполнен:
/**
* Invoke the custom lifecycle before executing this goal.
*
* @goal my-goal
* @execute lifecycle="my-custom-lifecycle" phase="process-resources"
*/
public class MyMojo extends AbstractMojo {
...
Затем определите пользовательский жизненный цикл в src/main/resources/META-INF/maven/lifecycle.xml.
Жизненный цикл немного похож на plexus 'components.xml, но позволяет указать конфигурацию для этих целей.
Обратите внимание, что синтаксис немного отличается от настроек плагина в pom. Вы определяете цель, используя: как разделитель, а не указывающий отдельные элементы groupId, artifactId и версии, в противном случае это в значительной степени то же обозначение, что и элемент выполнения конфигурации плагина в pom. Вы даже можете использовать некоторые свойства в файле lifecycle.xml(хотя, возможно, не все свойства поддерживаются, мне нужно проверить это).
В следующем примере дважды запускается плагин зависимостей с различными конфигурациями на фазе технологических ресурсов:
<lifecycles>
<lifecycle>
<id>download-dependencies</id>
<phases>
<phase>
<id>process-resources</id>
<executions>
<execution>
<goals>
<goal>
org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies
</goal>
</goals>
<configuration>
<includeScope>compile</includeScope>
<includeTypes>war</includeTypes>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.outputDirectory}/wars
</outputDirectory>
</configuration>
</execution>
<execution>
<goals>
<goal>
org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies
</goal>
</goals>
<configuration>
<includeScope>compile</includeScope>
<includeTypes>jar</includeTypes>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.outputDirectory}/jars
</outputDirectory>
</configuration>
</execution>
</executions>
</phase>
</phases>
</lifecycle>
</lifecycles>
При таком подходе плагин зависимостей будет вызываться один раз с каждой конфигурацией в фазе process-resources
разветвленного жизненного цикла (все происходит в рамках выполнения, определенного в Mojo).
В lifecycle.xml вы можете определить несколько фаз и несколько исполнений на фазу жизненного цикла. Доступные этапы определены в жизненном цикле Maven.
Вы можете узнать больше о жизненных циклах в разделе Создание пользовательского жизненного цикла в книге Maven. Он не дает исчерпывающего списка того, что разрешено. Единственная другая ссылка, которую я знаю, если это Maven 2 alpha, возможно, это не так актуально