Maven(m2e)没有执行ant任务

时间:2016-05-19 12:27:31

标签: eclipse maven ant m2e

我有一个POM文件(由Eclipse执行),我希望在generate-sources阶段执行ANT任务。根据{{​​3}},m2e documentationHow to solve "Plugin execution not covered by lifecycle configuration" for Spring Data Maven BuildsMaven: 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

2 个答案:

答案 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>