4

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

例如,如果我将阶段附加到进程资源,则每次启动码头时,我的配置文件都会重置。

所以我像这样配置了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>

如果我启动 mvn antrun:run,它只会返回这个错误:“[INFO] No ant target defined - SKIPPED”。如果我指定目标:“mvn antrun:run -Dtarget=init_config_files”,也是一样的。

4

4 回答 4

7

尝试这个:

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

并运行:

 mvn antrun:run
于 2012-06-13T07:14:42.813 回答
6

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

        <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

该解决方案避免了目标被意外运行,即。它不仅可以通过键入“mvn antrun:run”来运行,而且它也不会在常规 maven 运行期间运行。在所有模块(包括针对最终分发包完成的集成)已成功执行后,我将其用于我的 jenkins 实例中的 qa 自动部署。

于 2016-02-18T20:01:52.033 回答
4

我刚刚遇到了同样的问题,终于弄明白了:如果你只想运行一次 ant 任务,你可以像这样设置插件:

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

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

于 2013-11-13T14:56:08.773 回答
1

如果您需要在特殊条件下运行构建的某些部分(例如一次),您可以将这些部分放入Maven 配置文件中,然后调用 Maven 指定配置文件名称,例如mvn -p init_config_files package

于 2012-05-11T15:39:46.630 回答