我为我的项目使用maven-antrun-plugin作为init配置文件。但我需要初始化配置文件一次,当我第一次启动我的开发环境,而不是每次我启动jetty:运行。
例如,如果我将阶段附加到进程资源,每次启动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>
如果我启动mvn antrun:run,它只会给我这个错误:“[INFO]没有定义蚂蚁目标 - SKIPPED”。如果我指定目标,那就是同样的事情:“mvn antrun:run -Dtarget = init_config_files”。
答案 0 :(得分: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
答案 1 :(得分:4)
我遇到了同样的问题并最终弄明白:如果你只想运行一次ant任务,你可以像这样设置插件:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
<target name="init_config_files">
<!-- init files -->
</target>
</configuration>
</plugin>
并使用mvn antrun:run
执行它。这样,蚂蚁的东西就不会受到任何阶段的束缚。
答案 2 :(得分:4)
到目前为止我找到的最佳解决方案:
<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自动部署之后,所有模块包括针对最终分发包的集成已经成功执行。
答案 3 :(得分:1)
如果您需要在特殊条件下运行构建的某些部分(例如,一次),您可以将这些部分放入Maven profile,然后调用Maven指定配置文件名称,例如: mvn -p init_config_files package