我有一个POM文件(由Eclipse执行),我希望在generate-sources
阶段执行ANT任务。根据{{3}},m2e documentation,How to solve "Plugin execution not covered by lifecycle configuration" for Spring Data Maven Builds和Maven: execute antrun task during package,我以这种方式编写了我的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(m2e)请求Eclipse插件,以允许maven-antrun-plugin(版本1.8或更高版本)在generate-sources
期间执行。接下来,在generate-sources
阶段并在执行第一个插件之后,调用ant插件来运行回显我的消息的任务。
但是,消息没有显示。当我只执行generate-sources
目标时,也不执行install
目标时。
我是否关注Where should be placed maven-compiler-plugin declaration: in <plugins> or <pluginManagement>?,并在<phase>
内添加<execution>
元素,如下所示:
<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 )。 this sugestion here显示了一个示例,其中没有针对ant插件的特定<pluginManagement>
。但我也没有成功。
那么这里缺少什么?
谢谢,
Rafael Afonso
答案 0 :(得分:0)
实际上,我发现生命周期配置未涵盖错误消息插件执行:org.apache.maven.plugins:maven-antrun-plugin:1.8:run(执行:ant-test,阶段:生成 - 来源)对Maven执行没有影响。显示的消息没有任何问题。说实话,我不得不将task
更改为target
,但会继续显示该消息。可能它只是一种类型的m2e's bug,唯一的影响让我们烦恼。
答案 1 :(得分:0)
实际上,我做了下面的结构,它奏效了:
<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>