【问题标题】:Plugin maven-antrun-plugin execution not covered by lifecycle configuration with m2e使用 m2e 的生命周期配置未涵盖插件 maven-antrun-plugin 执行
【发布时间】:2013-10-08 13:53:58
【问题描述】:

我知道this has been asked before,但我仍在努力解决这个问题。当我将项目加载到 eclipse 中时,出现以下异常:

Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-antrun-plugin:1.7:run (execution: generate-webapp-name, phase: compile)

我的 maven 项目由许多模块 (>200) 组成,并且会导致所有模块出现问题。

我尝试忽略pom.xml(在父模块中)中的runcompile 目标:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
                    <pluginExecutions>
                        <pluginExecution>
                            <pluginExecutionFilter>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-antrun-plugin</artifactId>
                                <versionRange>[1.7,)</versionRange>
                                <goals>
                                    <goal>compile</goal>
                                    <goal>run</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <ignore/>
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

但还是不行。

【问题讨论】:

  • 预期的行为是什么?
  • @user944849 - 没有预期的行为。我只想将项目导入 Eclipse 并没有看到我提到的异常。我提供的 pom.xml 代码取自一个类似的问题(使用其他插件),该问题解释了问题及其发生的原因。我遵循了不同的问题,但问题仍然存在。
  • 尝试选择所有项目,然后右键单击并选择Maven --&gt; Update Projects... 看看是否有帮助。
  • @user944849 - 我做的第一件事,在发布问题之前做了很多;)
  • 先消除明显的东西总是好的。接下来试试这个。打开命令行窗口,cd 到顶层项目目录,然后运行 ​​mvn clean install(在 Eclipse 之外)。然后,返回 Eclipse,选择所有项目,然后刷新它们。

标签: java eclipse maven m2e maven-antrun-plugin


【解决方案1】:

您必须指定您为 maven-antrun-plugin(在我的例子中为 run)设置的目标应该执行。对于访问此页面的任何人,请在 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.apache.maven.plugins</groupId>
                                <artifactId>maven-antrun-plugin</artifactId>
                                <versionRange>[1.7,)</versionRange>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <execute />
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

来源here

值得一提的是,我使用了一个非常简单的 ant 代码。我正在使用的插件代码是下面的这个。我使用了deploy 阶段,但如果您愿意,可以使用另一个阶段

<plugins>
    <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.8</version>
        <executions>
            <execution>
                <id>antrun.package</id>
                <phase>deploy</phase>
                <goals>
                    <goal>run</goal>
                </goals>
                <configuration>
                    <target>
                        <mkdir dir="${destinationBasePath}/WEB-INF/classes"/> 
                        <copy todir="${destinationBasePath}\WEB-INF\classes">
                            <fileset dir="${basedir}/target/classes" includes="**" />
                        </copy>
                    </target>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

【讨论】:

  • 感谢您的回答。我不能接受,因为那是三年前的事了。从那以后我已经换了 2 个工作场所,但我不知道如何重现它(我也不记得这个问题)。感谢您的回答。希望其他人会发现它有用:)
  • 没问题。真正的目的是帮助新访客。我花了很多时间试图找出这个解决方案。希望其他人能更快地找到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2011-10-10
  • 2020-04-19
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
相关资源
最近更新 更多