Maven 如何将插件MOJO(目标)绑定到默认生命周期的几个阶段?
我有三个目标(莫霍斯):Maven 如何将插件MOJO(目标)绑定到默认生命周期的几个阶段?,maven,maven-3,maven-plugin,Maven,Maven 3,Maven Plugin,我有三个目标(莫霍斯): convert分配给默认阶段:过程测试资源 generateSubs分配给默认阶段:package generateTests分配给默认阶段:generateTestsources 如何将这三个mojo绑定到,这样用户就可以简单地使用插件,而无需进行特殊配置,也无需对project打包进行任何更改 用户只需添加: <plugin> <groupId>io.codearte.accurest</groupId> &l
分配给默认阶段:convert
过程测试资源
分配给默认阶段:generateSubs
package
分配给默认阶段:generateTests
generateTestsources
打包进行任何更改
用户只需添加:
<plugin>
<groupId>io.codearte.accurest</groupId>
<artifactId>accurest-maven-plugin</artifactId>
<extensions>true</extensions>
</plugin>
这是正确的吗?进行这种配置的更好方法是什么
更多信息:
- 工作
- 使用此配置的示例项目:
我认为您要查找的是Mojo
注释的defaultPhase
属性,有关所有详细信息,请参阅。您可以通过在
标记中用正确的目标替换丑陋的修复程序来实现这一点:
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.Lifecycle</role>
<implementation>org.apache.maven.lifecycle.Lifecycle</implementation>
<role-hint>accurest</role-hint>
<configuration>
<id>accurest</id>
<phases>
<process-test-resources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:convert
</process-test-resources>
<generate-test-sources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateTests
</generate-test-sources>
<package>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateStubs
</package>
</phases>
<default-phases>
<process-test-resources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:convert
</process-test-resources>
<generate-test-sources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateTests
</generate-test-sources>
<package>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateStubs
</package>
</default-phases>
</configuration>
</component>
</components>
org.apache.maven.lifecycle.lifecycle
org.apache.maven.lifecycle.lifecycle
阿奎斯特
阿奎斯特
accurest:accurestmaven插件:${project.version}:convert
accurest:accurest maven插件:${project.version}:generateTests
accurest:accurest maven插件:${project.version}:GenerateSubs
accurest:accurestmaven插件:${project.version}:convert
accurest:accurest maven插件:${project.version}:generateTests
accurest:accurest maven插件:${project.version}:GenerateSubs
不,不是这样,OP希望插件在执行时不在POM中声明任何
。defaultPhase
需要执行。是的,这是第二件事。。OP希望它能够自动与默认生命周期中的任何打包一起工作(而不是它们自己的打包)。:)(这就是我被卡住的地方,不必从maven core复制粘贴整个default bindings.xml
)不可能。我不建议调整生命周期,只是让打包插件来决定。简单想象一下:如果每个构建插件都重写生命周期,会发生什么?我敢肯定,大多数Maven用户都知道如何将插件目标绑定到各个阶段,特别是使用一个准备好的复制粘贴示例:)@mᴀʀɪᴜsᴢ在您的示例中,您有一个定制的包,其生命周期涉及您的3个阶段(因此它以预期的方式工作)。这与为默认生命周期的所有打包调用插件目标不同。@Mᴀʀɪᴜsᴢ如果您使用jar
打包进行测试,并且在组件.xml
中有jar
,您将看到它们是唯一被调用的,而正常jar
的其他默认阶段没有被调用。这看起来仍然像是黑客攻击
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.Lifecycle</role>
<implementation>org.apache.maven.lifecycle.Lifecycle</implementation>
<role-hint>accurest</role-hint>
<configuration>
<id>accurest</id>
<phases>
<phase>ugly-fix</phase> // plugin fail without this
</phases>
<default-phases>
<process-test-resources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:convert
</process-test-resources>
<generate-test-sources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateTests
</generate-test-sources>
<package>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateStubs
</package>
</default-phases>
</configuration>
</component>
</components>
</component-set>
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.Lifecycle</role>
<implementation>org.apache.maven.lifecycle.Lifecycle</implementation>
<role-hint>accurest</role-hint>
<configuration>
<id>accurest</id>
<phases>
<process-test-resources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:convert
</process-test-resources>
<generate-test-sources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateTests
</generate-test-sources>
<package>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateStubs
</package>
</phases>
<default-phases>
<process-test-resources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:convert
</process-test-resources>
<generate-test-sources>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateTests
</generate-test-sources>
<package>
io.codearte.accurest:accurest-maven-plugin:${project.version}:generateStubs
</package>
</default-phases>
</configuration>
</component>
</components>