是否可以挑出并运行绑定到maven阶段的特定目标?

时间:2010-02-12 14:20:36

标签: maven-2 ant

更新为(希望)澄清:如果定义目标在给定阶段运行,是否可以在不运行所有阶段的情况下运行单个目标。换句话说,是否可以在不获取依赖关系,生成资源,编译,测试,打包等的情况下运行antrun:run目标(下面定义为安装阶段的一部分)?

我正在使用antrun插件在package阶段创建一个zip文件,并在install阶段删除和复制一些文件。我了解如何运行单个maven插件目标,例如:mvn antrun:run。但是,有没有办法运行特定执行的目标?像mvn antrun:run:execution-idmvn 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>

3 个答案:

答案 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插件。对不起,如果答案不合适,我没有耐心仔细阅读你的问题,我的工作时间结束了......欢呼声