如何执行一组我的Maven插件运行之前目标是什么?(How do I execute a set o

2019-07-18 03:22发布

我正在写一个Maven插件(魔),需要在运行前执行一套标准的其他插件处决。

有没有宣布我的插件内的所有目标,所以我不必依靠定义它们都在各自的POM用户的机制?

Answer 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 /资源/ META-INF /行家/ lifecycle.xml一个自定义的生命周期。

生命周期是一个有点像丛的components.xml,但允许您为这些目标指定配置。

注意语法略有不同,以插件的POM的配置。 定义使用的目标:作为隔板,而不是指定单独的groupId,artifactId和version元件,否则它在很大程度上是相同的符号如在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叉形生命周期的相位(在魔定义的执行之内的所有事情)。

在lifecycle.xml,您可以定义多个阶段,每生命周期的阶段多次执行。 可用阶段的定义Maven的生命周期 。

你可以找到更多关于在生命周期中创建自定义生命周期 Maven的书的部分。 它不给的是什么,虽然允许一个详尽的清单。 唯一的其他参考我知道,如果是从Maven的2阿尔法 ,所以可能是不是该由最新



文章来源: How do I execute a set of goals before my Maven plugin runs?