5

我在 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)

我尝试通过在 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>
4

1 回答 1

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 />为 action 来启用它。

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

于 2014-01-27T00:18:31.097 回答