代码之家  ›  专栏  ›  技术社区  ›  Upgradingdave

是否有可能挑选出一个特定的目标并运行到maven阶段?

  •  8
  • Upgradingdave  · 技术社区  · 15 年前

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

    我正在使用antrun插件创建一个zip文件 package 阶段中删除和复制某些文件 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>
    
    3 回复  |  直到 15 年前
        1
  •  6
  •   Pascal Thivent    15 年前

    不,不是。而您可以配置插件(使用 <configuration> 下一节 <plugin> 元素)并在命令行上调用,则不能调用特定的executionid(因此 < 特定于 <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
    
        2
  •  1
  •   Adnan    15 年前
        3
  •  0
  •   ant    15 年前

    例如:

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