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

标签 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 环境中工作)和有人评论的答案是将 exec-maven-plugin 替换为 maven-antrun-plugin。奇怪的是,尽管我在互联网上找到的主要示例并没有真正展示除了运行 echo 命令之外如何做更多的事情。如果我理解正确,我需要运行 Ant exec 命令来运行主过程中的代码,并可能运行另一个脚本来在完成时停止主线程(实际上我对此不太清楚)。我只是无法理解我应该在脚本中做什么。我应该查看 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>

谢谢

最佳答案

如果您需要的只是执行一个 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>

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

关于java - 用于将 exec-maven-plugin 替换为 maven-antrun-plugin 的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28009844/

相关文章:

java - 改变数组元素的顺序

java - Android Studio 应用程序随机耗尽内存

maven - IntelliJ 的 "Reimport All Maven Projects"按钮如何工作?

java - 一切正常,但仍然出现 -> 类型 Dynamic Web Module 4.0 需要 Java 1.8 或更高版本

java - Maven surefire testng 提供程序运行 JUnit 测试,但不报告结果

java代码模板

java - API证书不受浏览器信任,我该怎么办?

java - 未调用 JAXB ValidationEventHandler 的 handleEvent 方法

java - org.apache.camel.NoSuchLanguageException : No language could be found for: simple

firefox - 在 Linux 上的 Jenkins 下运行的 WebDriver 测试中出现 NotConnectedException 错误