我正在构建一个插件来进行代码生成。
我已按照此处的步骤来了解如何创建插件: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html
插件来源:
/**
* @goal helloworld
* @phase generate-sources
*/
public class SampleMojo extends AbstractMojo
{
@Override
public void execute() throws MojoExecutionException, MojoFailureException
{
getLog().info("Hello, world.");
}
}
用法:
<plugins>
<plugin>
<groupId>com.sample</groupId>
<artifactId>sample-maven-plugin</artifactId>
<version>0.0.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>helloworld</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
该插件本身可以正常工作,但在Eclipse中,我一直得到“生命周期未涵盖”的错误。
我通过"How to solve “Plugin execution not covered by lifecycle configuration” for Spring Data Maven Builds"阅读并假设如果我创建了自己的插件并设置了@phase和@goal注释,那么它将摆脱该错误。我真的不想放入pom中的“lifecycleMappingMetadata”节点。
有人对此有任何建议吗?我需要为m2e编写一些特殊内容才能让错误消失吗?
答案 0 :(得分:5)
ķ。 Claszen的答案是正确的,但我想填写一些额外的细节。
这种行为的目的是防止m2e通过增量(并且可能永无止境)的变化消耗太多资源。
目前m2e 1.1仍然是一个“里程碑”。 用户需要使用此更新站点安装/升级到它: http://download.eclipse.org/technology/m2e/milestones/1.1 (我还必须卸载'm2e SCM连接器'才能升级它)
现在,对于您的用户而言,这可能比在他们的pom.xml文件中插入“快速修复”代码段更麻烦。但是,从长远来看,使用它是件好事。
如K. Claszen所述,大部分信息都在这里:M2E compatible maven plugins。
一些关键点:
如果1.1对您的用户来说不是一个现实的选择,您可以:
<ignore />
行更改为<execute />
。还有其他SO问题/答案涵盖了这一点。答案 1 :(得分:2)
我认为M2E compatible maven plugins网站会为您提供所需的信息。请注意,这首先适用于m2e版本1.1。