生命周期配置未涵盖Eclipse Maven错误插件执行:

时间:2013-05-09 19:11:16

标签: eclipse maven maven-3 m2eclipse m2e

我在Windows 7上使用Eclipse Juno和Maven 3.0.5。该项目之前是在Windows XP上,我已经转移到Windows 7 64位计算机。

我复制了我的Eclipse Spring 3,Hibernate 4和JSF 2.0项目,当我尝试编译时出现以下错误

Plugin execution not covered by lifecycle configuration: 
org.bsc.maven:maven-processor-plugin:2.0.6:process (execution: process, phase: 
generate-sources)

我在this线程中通过在Eclipse.ini文件中添加以下内容来尝试,但它没有解决问题。

-vm
c:\Program Files\Java\jdk1.7.0_21\jre\bin\server\jvm.dll

尝试构建maven安装和清理,但问题仍然存在。

如何解决此问题?任何帮助都非常值得赞赏。

由于

Maven代码段

<plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>              
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArgument>-proc:none</compilerArgument>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.bsc.maven</groupId>
                <artifactId>maven-processor-plugin</artifactId>
                <version>2.0.6</version>
                <executions>
                    <execution>
                        <id>process</id>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <phase>generate-sources</phase>
                        <configuration>
                            <!-- source output directory -->
                            <outputDirectory>target/metamodel</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>

1 个答案:

答案 0 :(得分:5)

如果Maven插件没有提供m2e生命周期映射,则较新版本的m2e会抱怨。较新的插件提供程序通过其JAR中的文件 META-INF / m2e / lifecycle-mapping-metadata.xml 提供此类映射。如果这个文件不存在,那么Eclipse会抱怨。

通过为POM添加旧插件的生命周期映射,可以完全避免这些抱怨。在给定的示例中,此映射在配置文件内完成,该配置文件在Eclipse中运行构建时自动激活(设置m2e.version属性),并且在完成常规maven构建时不活动。

<profiles>
  <profile>
    <id>m2e</id>
    <activation>
      <property>
        <name>m2e.version</name>
      </property>
    </activation>
    <build>
      <pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
              <lifecycleMappingMetadata>
                <pluginExecutions>
                  <pluginExecution>
                    <pluginExecutionFilter>
                      <groupId>org.bsc.maven</groupId>
                      <artifactId>maven-processor-plugin</artifactId>
                      <versionRange>[2.0.6,)</versionRange>
                      <goals>
                        <goal>process</goal>
                      </goals>
                    </pluginExecutionFilter>
                    <action>
                      <ignore />
                    </action>
                  </pluginExecution>
                </pluginExecutions>
              </lifecycleMappingMetadata>
            </configuration>
          </plugin>         
        </plugins>
      </pluginManagement>
    </build>
  </profile>

上面的示例禁用了Eclipse构建中的插件。也可以通过将<execute />指定为操作来启用它。

请注意, pluginExecutionFilter 下的设置必须与您希望映射的插件和插件的目标相匹配。可以指定多个 pluginExecution 元素来映射不同的插件。