关于Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin的解决方案

前景回顾

eclipse自带maven生成的repository仓库是在C盘下,由于之前占用空间太大,遂自定义到D盘,删除了C盘的repository。

原因分析

原C盘下repository里有下载的插件文件,在D盘下无法找到maven-compiler-plugin的插件。

解决方法

方法一:

 1 <build>
 2         <pluginManagement>
 3             <plugins>
 4                 <plugin>
 5                     <groupId>org.eclipse.m2e</groupId>
 6                     <artifactId>lifecycle-mapping</artifactId>
 7                     <version>1.0.0</version>
 8                     <configuration>
 9                         <lifecycleMappingMetadata>
10                             <pluginExecutions>
11                                 <pluginExecution>
12                                     <pluginExecutionFilter>
13                                         <groupId>org.apache.maven.plugins</groupId>
14                                         <artifactId>maven-compiler-plugin</artifactId>
15                                         <versionRange>[2.5,)</versionRange>
16                                         <goals>
17                                             <goal>compile</goal>
18                                             <goal>testCompile</goal>
19                                         </goals>
20                                     </pluginExecutionFilter>
21                                     <action>
22                                         <ignore />
23                                     </action>
24                                 </pluginExecution>
25                             </pluginExecutions>
26                         </lifecycleMappingMetadata>
27                     </configuration>
28                 </plugin>
29             </plugins>
30         </pluginManagement>
31     </build>

然后在项目上右击Maven -> Update Project...

但由于某种原因我们不能随便改pom.xml文件,遂舍弃。

方法二:

菜单栏 Window -> Preferences -> Maven -> Lifecycle Mapping

查看Change mapping file location一栏的地址,一般都是workspacePath/.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml,然而我的org.eclipse.m2e.core目录下没有lifecycle-mapping-metadata.xml文件,于是我们需要到Eclipse的安装目录下找到plugins\org.eclipse.m2e.lifecyclemapping.defaults_xxxxx.jar文件,解压之后就会看到一个lifecycle-mapping-metadata.xml文件,打开编辑他,在<pluginExecutions>中插入

    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <versionRange>[2.5,)</versionRange>
        <goals>
          <goal>testCompile</goal>
          <goal>compile</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>

保存之后将其复制到上面说的workspacePath/.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml目录。

可以把Preferences -> Maven中的Update Maven projects on startup选项勾上,然后重启Eclipse即可