如何在不将执行附加到maven阶段的情况下调用maven antrun插件目标?

如何在不将执行附加到maven阶段的情况下调用maven antrun插件目标?,maven,maven-antrun-plugin,Maven,Maven Antrun Plugin,我使用maven antrun插件为我的项目初始化配置文件。但我只需要初始化配置文件一次,当我第一次开始初始化我的开发环境时,而不是每次启动jetty:run时 例如,如果我将阶段附加到流程资源,则每次启动jetty时,配置文件都会重置 所以我这样配置antrun: <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execu

我使用maven antrun插件为我的项目初始化配置文件。但我只需要初始化配置文件一次,当我第一次开始初始化我的开发环境时,而不是每次启动jetty:run时

例如,如果我将阶段附加到流程资源,则每次启动jetty时,配置文件都会重置

所以我这样配置antrun:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
        <goals>
            <goal>run</goal>
        </goals>
        <configuration>
            <target name="init_config_files">
                <!-- init files -->
            </target>
        </configuration>
        </execution>
    </executions>
</plugin>

maven antrun插件
跑

如果我启动mvn antrun:run,它只会返回以下错误:“[INFO]未定义ant目标-跳过”。同样,如果我指定target:“mvn antrun:run-Dtarget=init_config_files”。

如果您需要在特殊条件下运行构建的某些部分(例如一次),您可以将这些部分放在一个文件中,然后调用Maven指定概要文件名,例如
mvn-p init_config_files包
尝试以下方法:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>default-cli</id>
                    <configuration>
                        <target>
                            <property name="compile_classpath" refid="maven.compile.classpath" />
                            <echo message="compile classpath: ${compile_classpath}" />
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我也遇到了同样的问题,最终解决了:如果你只想运行一次ant任务,你可以这样设置插件:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <configuration>
        <target name="init_config_files">
            <!-- init files -->
        </target>
    </configuration>
</plugin>

maven antrun插件

并使用
mvn antrun:run
执行它。这样,ant的东西就不会绑定到任何阶段。

到目前为止,我找到的最佳解决方案是:

        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>go-live</id>
                    <configuration>
                        <target>
                            <!-- go live! -->
                            <exec executable="${basedir}/deploy2server.sh" failonerror="true" dir="${basedir}">
                                <arg value="deploy" />
                                <arg value="${deploy.to.server}" />
                                <arg value="${jetty.port.live}" />
                            </exec>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

这个解决方案避免了目标被意外运行,也就是说,它不只是通过键入“mvn antrun:run”来运行,而且它也不会在常规的maven运行期间运行。在所有模块(包括针对最终分发包的集成)都成功执行后,我将在jenkins实例中使用此解决方案进行qa自动部署。

我已经将此解决方案用于另一个插件,但我的想法受阻:“为什么antrun绝对希望附加到某个阶段?”:)Thx非常好的解决方案。使用此方法,您可以执行多个执行,并且可以选择其中一个。这是有史以来最好的答案!在你的帮助下,我现在可以分别执行死刑了:D谢谢
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>go-live</id>
                    <configuration>
                        <target>
                            <!-- go live! -->
                            <exec executable="${basedir}/deploy2server.sh" failonerror="true" dir="${basedir}">
                                <arg value="deploy" />
                                <arg value="${deploy.to.server}" />
                                <arg value="${jetty.port.live}" />
                            </exec>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
 mvn antrun:run@go-live