如何默认将maven插件附加到阶段?

我有一个应该在编译阶段运行的maven插件,因此在使用我的插件的项目中,我必须做这样的事情:

  compile  my-goal    

我需要的是默认情况下,如果用户已经包含了我的插件,那么将my-goal附加到编译阶段(理想情况下,上面的部分不是必需的,只是插件声明)。

这可能吗?

在您的Mojo classdef注释中添加@phase注释。

医生说:

 @phase  

此批注指定此目标的默认阶段。 如果将此目标的执行添加到pom.xml并且未指定阶段,Maven将默认将目标绑定到此批注中指定的阶段。

如果这不起作用,我想JIRA是有道理的。

在插件中创建src \ main \ resources \ META-INF \ plexus \ components.xml的实例。

在那里为您希望Mojo支持的工件类型创建LifeCycle映射。 确保它列出了您要支持的所有阶段和插件。 可能最好从maven-core.jar中复制一个。

然后将您的插件添加到您希望它们构建的阶段的相应LifeCycle中。

例如, 消耗aar Mojo添加到aar生命周期的编译阶段。

   org.apache.maven.lifecycle.mapping.LifecycleMapping aar  org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping     com.jayway.maven.plugins.android.generation2:android-maven-plugin:generate-sources  org.apache.maven.plugins:maven-resources-plugin:resources  com.jayway.maven.plugins.android.generation2:android-maven-plugin:consume-aar, org.apache.maven.plugins:maven-compiler-plugin:compile  

这是可能的,但它是一个未记录的mavenfunction。

使用此components.xml

    org.apache.maven.lifecycle.Lifecycle org.apache.maven.lifecycle.Lifecycle myplugin  accurest  my-plugin-not-used-phase    my.package:my-plugin:${project.version}:my-goal      

但是您的插件需要添加true来修改现有生命周期。

更多: 如何将插件mojos(目标)绑定到默认生命周期的几个阶段?

真实项目: https : //github.com/spring-cloud/spring-cloud-contract/blob/master/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/resources/META -INF /丛/ components.xml中

您将插件与maven lifecyle 目标相关联。 应该同步声明插件配置。

例如,如果你想在构建阶段运行一些插件,你需要做这样的事情:

  ... ...   **Configuration of plugin**    

请仔细阅读maven生命周期(这是了解maven的基础): http : //maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

然后了解如何配置插件: http : //maven.apache.org/guides/mini/guide-configuring-plugins.html

PS首先进入maven的逻辑并不容易。 但事后才有回报。