在eclipse中打开pom.xml 文件报
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:xml-maven-plugin:1.0:transform (execution: default,phase: generate-resources)
主要的意思就是说 maven 未定义该插件。所以报错 需要mvaen 提供扩展机制 。可以通过修改maven的lifecycle-mapping-Metadata.xml 配置文件来消除该错误。
1. 进入Window—>Preferences—>Maven—>Lifecycle Mapping 查看 lifecycle-mapping-Metadata.xml文件路径
2. 进入该路径 对lifecycle-mapping-Metadata.xml 文件进行编辑。 如果在该路径下 找不到相应文件。可以在eclipse 安装目录下的 plugins下的org.eclipse.m2e.lifecyclemapping.defaults_xxxxxx.jar 中找到 解压出来 加入未识别的插件
代码:
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId><!-- 插件名称 -->
<versionRange>[1.0,)</versionRange> <!-- 版本范围-->
<goals>
<goal>transform</goal><!--mvn 命令就是 xx-plugin后面的那串 -->
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
各个插件的具体情况不一样 所以要根据自己的情况 进行改动。
3.修改完成后,需在maven 设置中把“Update Maven projects on startup”选项勾上,并重启eclipse即可消除出错示。
如果觉得上面的方法有点麻烦。而且如果换了机器的话 又需要重新设置 太麻烦 那么有一个简单的方法 可以一步解决。那就是把上面的设置信息加入pom 文件中
代码:
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>transform</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
保存后,错误消失。
总结:
方法一 是在maven 配置文件级别改动 改完后其他项目也可以使用。
方法二 是在项目级别改动 其他项目如果也用到该插件 需要在pom 文件中 写人该配置。
技巧: 如果不知道该插件都有哪些命令 可以打开 xml-maven-plugin-1.0.jar包下的/Meta-INF/maven 下的 plugin.xml查看。
plugin.xml 文件中的goal标签表示的是 该插件能提供的所以命令。 你可以只把自己需要的加入进来 也可以把所有的都加进去。