Maven (m2e) 没有执行 ant 任务
Posted
技术标签:
【中文标题】Maven (m2e) 没有执行 ant 任务【英文标题】:Maven (m2e) is not executing ant task 【发布时间】:2016-09-16 08:00:45 【问题描述】:我有一个 POM 文件(由 Eclipse 执行),我想在 generate-sources
阶段执行一个 ANT 任务。基于m2e documentation,在How to solve "Plugin execution not covered by lifecycle configuration" for Spring Data Maven Builds、Maven: execute antrun task during package和Where should be placed maven-compiler-plugin declaration: in <plugins> or <pluginManagement>?,我这样写了我的POM文件:
<?xml version="1.0" encoding="UTF-8"?>
<project>
...
<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.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>[1.8,)</versionRange>
<goals>
<goal>generate-sources</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<!-- Plugin 1 -->
</plugin>
<plugin>
<!-- Plugin to be executed during generate-sources phase. -->
</plugin>
<plugin>
<!-- Should be in the generate-sources phase after the plugin above. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>ant-test</id>
<configuration>
<task>
<echo message="ANT TEST" />
</task>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
我从阅读中了解到,我要求告诉 Maven 以下内容:首先要求 Maven 的 Eclipse 插件(m2e)允许 maven-antrun-plugin(1.8 版或更高版本)在generate-sources
期间执行。接下来,在generate-sources
阶段和第一个插件执行后,调用ant插件运行回显我的消息的任务。
但是,没有显示消息。当我只执行generate-sources
目标和执行install
目标时都不会。
如果我关注this sugestion here,并在<execution>
中添加<phase>
元素,如下所示:
<executions>
<execution>
<id>ant-test</id>
*<phase>generate-sources</phase>*
<configuration>
<task>
<echo message="ANT TEST" />
</task>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
我有一条 Eclipse 错误消息:生命周期配置未涵盖插件执行:org.apache.maven.plugins:maven-antrun-plugin:1.8:run(执行:ant-test,阶段:generate-sources )。 Here 显示了一个示例,其中没有特定的 <pluginManagement>
用于 ant 插件。但我也没有成功。
那么这里缺少什么?
谢谢,
拉斐尔·阿方索
【问题讨论】:
将m2e中的配置从generate-sources
改为run
...
抱歉,没有成功。 :(
【参考方案1】:
其实我发现报错信息Plugin execution not Covered by Lifecycle configuration: org.apache.maven.plugins:maven-antrun-plugin:1.8:run (execution: ant-test, phase: generate-来源) 对 Maven 执行没有影响。该消息显示没有问题。说实话,我不得不将task
更改为target
,但消息仍然显示。可能只是一种m2e的bug,唯一的影响就是让我们烦恼。
【讨论】:
【参考方案2】:实际上,我做了下面的结构,并且成功了:
<build>
<plugins>
<plugin>
....
</plugin>
<plugin>
...
</plugin>
</plugins>
<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.8,)
</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
【讨论】:
以上是关于Maven (m2e) 没有执行 ant 任务的主要内容,如果未能解决你的问题,请参考以下文章