更新为(希望)澄清:如果定义目标在给定阶段运行,是否可以在不运行所有阶段的情况下运行单个目标。换句话说,是否可以在不获取依赖关系,生成资源,编译,测试,打包等的情况下运行antrun:run
目标(下面定义为安装阶段的一部分)?
我正在使用antrun插件在package
阶段创建一个zip文件,并在install
阶段删除和复制一些文件。我了解如何运行单个maven插件目标,例如:mvn antrun:run
。但是,有没有办法运行特定执行的目标?像mvn antrun:run:execution-id
或mvn phase:antrun:run
?
基本上,如果我能告诉maven除了在部署阶段内运行下面定义的ant任务,我会很高兴。等待maven通过所有阶段只是为了检查部署阶段的ant任务是否正常工作,这有点乏味。
<executions>
<!-- create zip file -->
<execution>
<id>create-zip</id>
<phase>package</phase>
<configuration>
<tasks>
...create zip...
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<!-- do some other stuff -->
<execution>
<id>copy-files</id>
<phase>install</phase>
<configuration>
<tasks>
...delete some files, copy some files ...
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
答案 0 :(得分:6)
换句话说,是否可以运行antrun:run目标(下面定义为安装阶段的一部分)而不需要依赖,生成资源,编译,测试,打包等?
不,不是。虽然您可以配置插件(在<configuration>
元素下使用<plugin>
部分)并在命令行上调用,但您无法调用特定的执行ID(因此特定于<configuration>
到<execution>
)。
在您的情况下,唯一的解决方案是在配置文件中声明antrun插件,比如说my-profile
,复制配置的以下部分以配置此配置文件中的插件:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<configuration>
<tasks>
... delete some files, copy some files ...
</tasks>
</configuration>
</plugin>
并使用正确的有效个人资料进行调用:
mvn antrun:run -Pmy-profile
答案 1 :(得分:1)
尝试exec maven plugin ...
答案 2 :(得分:0)
例如:
当你使用maven运行jboss时,你看不到jboss控制台输出,但是我需要它来显示,所以我做的是我写了一个java文件,它读取server.log(服务器控制台输出)as它会更改以显示更改,因此看起来jboss控制台实际上正在显示(有点黑客但工作正常)。所以我回答你的问题,在预集成测试期间,我执行了一个启动java程序的java目标。以下是使用execute plugin的方法:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>console-start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>org.eclipse.console.Main</mainClass>
</configuration>
</plugin>
您只需运行安装并在预集成测试期间执行,但是如果您只想执行类似java的操作,请使用execute插件。对不起,如果答案不合适,我没有耐心仔细阅读你的问题,我的工作时间结束了......欢呼声