如何默认将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
但是您的插件需要添加
来修改现有生命周期。
更多: 如何将插件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的逻辑并不容易。 但事后才有回报。