用于用maven-antrun-plugin替换exec-maven-plugin的脚本

时间:2015-01-18 12:49:30

标签: java maven

如果这最终成为一个愚蠢的问题,很多道歉,我现在有点超出我的深度......

这与前一个问题相关

Upgrading exec-maven-plugin from 1.1.1 to 1.2 or 1.3.2

基本上我有一个maven java应用程序,它是从Jenkins的命令行(或命令窗口进行测试)运行的。它运行一些处理,主服务器需要一个小时左右(在较小的机器上运行2天!)。它一直在运行exec-maven-plugin 1.1.1。我最近更新了一些依赖项,奇怪的是它现在在处理结束时挂起了。我用谷歌搜索了一下,虽然我不完全理解为什么这似乎是一个已知的问题。我试图将exec-maven-plugin升级到1.3.2,这是失败的,这就是上面的问题。实际上我认为我有一个跟踪,我认为我需要找到一种不同的方式来运行代码(?)。让我了解问题的主旨......

我经常看到的答案(我在Windows环境中工作),有人评论说是用maven-antrun-plugin替换exec-maven-plugin。奇怪的是,虽然我在互联网上发现的主要例子并没有真正展示如何做更多的事情而不是运行echo命令。如果我理解正确的话,我需要运行Ant exec命令来运行Main proc中的代码,并且可能运行另一个脚本来完成主线程(我实际上对此不太清楚)。我只是无法处理我应该在脚本中做什么。我是否应该查看Ant文档以了解如何构建build.xml文件(我假设不是因为它是maven应用程序,这似乎是一个向后的步骤)或者我应该运行一些dos命令来执行某些任务或者一些内置的ant命令?

只是为了重新迭代我不希望任何人为我编写脚本(!)但是目前我还没有真正理解我在脚本中想要实现的目标,我应该使用什么级别的命令投入或如何开始。如果有人能指出我正确的方向或通过指向一些明确的文件向我展示我会非常感激。

如果我还不清楚,我一直在使用

运行应用程序
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>    
<executions>
    <execution>
        <phase>install</phase>
        <goals>
            <goal>java</goal>
        </goals>
        <configuration>
            <mainClass>com.org.dc.dcClient</mainClass>
        </configuration>
</execution>

我认为我的问题的解决方案(Maven无法控制代码竞争)是将其改为

<build>
  <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.1</version>
        <executions>
           <execution>
              <phase>install</phase>
              <goals>
                 <goal>run</goal>
              </goals>
              <configuration>
              <tasks>
                 <echo>Using Ant Run</echo>
                 <exec [script]"/>
              </tasks>                  
              </configuration>
           </execution>
        </executions>

由于

1 个答案:

答案 0 :(得分:0)

如果您只需执行一个java类,那么将以下行添加到您的pom中就可以完成这项工作。

    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
      <execution>
        <phase> <!-- a lifecycle phase --> </phase>
        <configuration>
          <target>
            <java classname="test.Main">
             <arg value="-h"/>
             <classpath>
               <pathelement location="dist/test.jar"/>
               <pathelement path="${java.class.path}"/>
             </classpath>
           </java>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>

注意目标标签之间的部分。您需要处理类路径等的配置。