13

按照使用页​​面 (http://maven.apache.org/plugins/maven-antrun-plugin/usage.html) 上的说明和其他 Stackoverflow 问题,我一直在尝试让 Ant 任务从我的 Maven 构建中运行. 我已经将我要做的事情简化为“你好,Maven”的简单回声,但我什么也没得到。

我正在执行 Maven:

mvn package

我希望这个特定的任务在打包之前运行(“准备包”),所以我首先尝试了那个阶段,但是当它不起作用时,我尝试让我的阶段只是“打包”。

这是我尝试过的一种插件配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <id>id.package.ant</id>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <echo message="Hello, maven"/>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>

这是我尝试过的另一个:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <id>id.package.ant</id>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo message="Hello, maven"/>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

我也试过这些没有<id>。

我没有错误,根本没有输出。即使我执行 Maven -debug,“echo”这个词也不会出现在输出中,“antrun”这个词不会出现在输出中,“hello”这个词不会出现在输出中。

就像插件配置甚至不存在一样。

4

4 回答 4

18

安德鲁在他的评论中给出了正确的答案。当我将我的 maven-antrun-plugin AS-IS 上面(使用<target>而不是<tasks>) OUT<pluginManagement>和移到 Standalone<plugins>时,我的 Ant 任务开始执行。

令人惊讶的是,有多少 Google 和 Stackoverflow 的搜索之前没有返回另一个问题,但现在我更好地理解了 pluginManagement。谢谢,安德鲁!

于 2013-01-25T18:24:44.233 回答
10

将 ant 从 1.7 更改为 1.8 解决了我的问题。

于 2016-07-27T21:54:51.753 回答
3

我遇到了类似的问题,并且仅在添加 1.8 版标签时才有效。否则它不会工作。这可能会有所帮助。

于 2017-10-10T11:17:23.933 回答
1

我遇到了类似的问题。就我而言,这是因为我没有<id>...</id>为执行设置标签。以下是有效的 XML:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <id>test</id> <!-- has to be set -->
            <phase>validate</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target name="test">
                    <echo message="testing 1 2 3"/>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>
于 2017-09-21T21:48:25.130 回答