基於maven的項目,使用各種maven plugin來完成開發中的各種工作,例如編譯代碼,打包,部署等等… 每個plugin包含許多的goal,用來做特定的事情。典型的基於java的maven項目就有 clean compile test package deploy等goal要執行。除了這些比較常見的goal之外,項目中還可以使用大量的第三方的plugin,甚至自己動手開發的plugin。
隨之而來的問題是,在eclipse中編輯maven項目的時候,eclipse並不知道這些goal要做什么,通用的goal還好說,特殊用途的goal就沒有辦法了。所以m2eclipse這個集成maven到eclipse的plugin就提供了開發extra的能力,eclipse利用這些extra來完成本來在maven plugin要干的活。
如果eclipse沒有辦法知道某個goal要干什么,那么通常就會看到如下的錯誤信息:
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-dependency-plugin:2.6:copy (execution: default, phase: validate)
參考這里http://wiki.eclipse.org/M2E_plugin_execution_not_covered 之后,要做的就是告訴eclipse要忽略的goal,我認為在workspace的層面忽略比較合適,這個本身就是編輯器層次的問題,和項目無關,所以如果放在pom中感覺怪怪的。由於我個人更傾向於在命令行下讓maven干活,而eclipse更多的只是充當編輯器的角色,所以我要的只是讓eclipse忽略掉這些goal就好了。
首先安裝最新版本的m2eclipse (1.2 ver),update side是 http://download.eclipse.org/technology/m2e/releases 因為m2eclipse已經交給eclipse來維護了,所以之前的那個(http://download.eclipse.org/technology/m2e/releases),已經不更新了。
安裝完之后,我們來忽略上面的那個錯誤,它的意思是eclipse不知道 maven-dependency-plugin 里面的 goal:copy 我沒有辦法執行 :) 要忽略這個goal,打開 eclipse->preference->maven->lifecycle mappings,打開 lifecycle-mapping-metadata.xml 文件,將如下內容替換進去:
lifecycle-mapping-metadata.xml
<?xml version="1.0" encoding="UTF-8" ?> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <versionRange>[2.6, )</versionRange> <goals> <goal>copy</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata>
然后執行一下Project Update,那個錯誤就消失了
http://ljhzzyx.blog.163.com/blog/static/383803122013440345857/