协慌网

登录 贡献 社区

如何解决 Spring Data Maven Builds 的 “生命周期配置未涵盖的插件执行”

我正在尝试使用Spring Data 和 Neo4j 。我开始尝试按照主站点链接的本指南 。特别是我将我的 pom.xml 基于“Hello,World!”。示例文件 。这是我的 pom.xml 中针对导致问题的插件的剪辑...

<plugin>
<!-- Required to resolve aspectj-enhanced class features -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.0</version>
    <configuration>
        <outxml>true</outxml>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
            <aspectLibrary>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-neo4j</artifactId>
            </aspectLibrary>
        </aspectLibraries>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
    <executions>
        <!-- ERROR HERE IN ECLIPSE SEE BELOW FOR FULL MESSAGE -->
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
    </dependencies>
</plugin>

我看到的错误是:

Multiple annotations found at this line:
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (execution: default, phase: process-classes)
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:test-compile (execution: default, phase: process-classes)

我正在运行 Eclipse 3.6.2 和 m2e 0.13。我不是 Maven 专家,所以如果可能的话,请在答案中说明一点。

我也通过这个更新站点尝试m2e 1.0.0仍然得到相同的错误。

答案

在我遇到类似问题的情况下,不是使用 Andrew 的修复建议,而是在我将标签引入到有问题的 pom.xml 之后。看起来该错误是由于缺少 标记造成的。因此,为了避免 Eclipse 中的异常,需要简单地将所有插件标记括在标记内,如下所示:

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>

一旦这个结构到位,错误就会消失。

真是一团糟。我不记得我在哪里找到了这个,但我必须添加以下内容才能让 M2Eclipse 感到高兴。更令人遗憾的是,理解为什么需要这个标签并不容易。

<build>
      ... various plugins ...

      <pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse 
                m2e settings only. It has no influence on the Maven build itself. -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>aspectj-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>test-compile</goal>
                                        <goal>compile</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

M2Eclipse 插件存在许多其他问题,这些问题根本无法与 Spring Data 一起使用。最后,我禁用了 M2Eclipse,转而支持Apache Eclipse 插件

Eclipse m2e 文档中的建议解决方案:

  1. 使用快速修复 pom.xml 中的错误并选择Permanently mark goal run in pom.xml as ignored in Eclipse build - 这将为您生成所需的样板代码。

  2. 要指示 Eclipse 在构建期间运行插件 - 只需在生成的配置中用<execute/>标记替换<ignore/>标记:

    <action>
        <execute/>
    </action>

    或者,您可以指示 Eclipse 在增量构建上运行插件:

    <action>
        <execute>
            <runOnIncremental>true</runOnIncremental>
        </execute >
    </action>