在POM配置Maven plugin提示錯誤“Plugin execution not covered by lifecycle configuration”的解決方案

eclipse在其POM文件的一處提示出錯如下:

Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (execution: default-compile, phase: compile)

 

這表示m2e在其執行maven的生命週期管理時沒有定義該插件,所以提示出錯,其實m2e對此是提供了擴展機制的,我們可以通過如下操作來消除這個出錯提示:

1. 進入Window—>Preferences—>Maven配置,進入Lifecycle Mapping設置項,如下圖:

   

   從上圖可以看出m2e管理maven生命週期的文件名是lifecycle-mapping-metadata.xml,以及該文件的存放路徑

2. 下一步我們就要去相應路徑修改lifecycle-mapping-metadata.xml文件,但會發現這個文件在上圖中提示的位置並不存在,那麼此時就

以到eclipse的安裝目錄下的plugins下的org.eclipse.m2e.lifecyclemapping.defaults_xxxxxx.jar文件中找到該文件(如下圖):

 

通過解壓軟件可以發現lifecycle-mapping-metadata.xml文件的確在jar包中,把它從jar包中解壓出來並放置到前圖所示的路徑下

3. 打開lifecycle-mapping-metadata.xml文件,把未識別的插件在文件中加入即可:

 

4.修改完成後,需在m2e配置處把“Update Maven projects on startup”選項勾上,並重啓eclipse即可消除出錯示。



類似問題的解決辦法:

導入Myabtis源碼後,POM文件會報出如下異常:

Plugin execution not covered by lifecycle configuration org.sonatype.plugins:jarjar-maven-plugin

Plugin execution not covered by lifecycle configuration org.apache.felix:maven-bundle-plugin


在這裏找到了問題的原因和解決辦法:

http://wiki.eclipse.org/M2E_plugin_execution_not_covered

m2e在eclipse中執行maven生命週期構建,配置完畢後執行Maven構建後的項目。這是被多個不同Maven目標控制的。有些目標在workspace層面控制,有些在project/.setting下控制。

但是在特殊情況下還是會有異常。主要原因有2個:1、workspace外部的資源修改了,使得Maven插件構建workspace出現異常。2、在不同的JVM和系統下,maven插件可能會導致內存泄露。

爲了解決這些長期存在的問題,m2e插件需要知道每個Maven插件的生命週期。這就需要用到"project build lifecycle mapping" 或者 "lifecycle mapping"。


由於Mybatis的牛人們都不用m2e插件,而是自己用指令控制Maven操作。所以有些插件對於m2e來說是沒有用到的。現在只需要告訴m2e插件忽略檢查這些插件的生命週期就好。


在文章的結尾我也找到了解決辦法:

Window-Perferences-Maven-Lifecycle Mapping

點擊Open workspace lifecycle mappings metadata。加入如下內容:

<lifecycleMappingMetadata>
	<pluginExecutions>
		<pluginExecution>
			<pluginExecutionFilter>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>jarjar-maven-plugin</artifactId>
				<versionRange>[1.7,)</versionRange>
				<goals>
					<goal>jarjar</goal>
				</goals>
			</pluginExecutionFilter>
			<action>
				<ignore />
			</action>
		</pluginExecution>
		<pluginExecution>
			<pluginExecutionFilter>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<versionRange>[2.3.7,)</versionRange>
				<goals>
					<goal>manifest</goal>
				</goals>
			</pluginExecutionFilter>
			<action>
				<ignore />
			</action>
		</pluginExecution>
		<pluginExecution>
			<pluginExecutionFilter>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<versionRange>[1.0.0,)</versionRange>
				<goals>
					<goal>enforce</goal>
				</goals>
			</pluginExecutionFilter>
			<action>
				<ignore />
			</action>
		</pluginExecution>
	</pluginExecutions>
</lifecycleMappingMetadata>
將上面的文件保存到location地址下  重新update maven
發佈了313 篇原創文章 · 獲贊 49 · 訪問量 87萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章