用于将 exec-maven-plugin 替换为 maven-antrun-plugin 的脚本
script used for replacing exec-maven-plugin with maven-antrun-plugin
如果这最终成为一个愚蠢的问题,我深表歉意,我现在有点不知所措...
这与之前的问题有关
Upgrading exec-maven-plugin from 1.1.1 to 1.2 or 1.3.2
基本上我有一个 Maven java 应用程序,它是从 Jenkins 中的命令行 运行(或命令 window 进行测试)。它 运行 是一些在主服务器上需要一个小时左右的处理(在较小的机器上需要 2 天!)。它已经是 运行 exec-maven-plugin 1.1.1。我最近更新了一些依赖项,奇怪的是它现在挂在处理结束时它以前没有的地方。我在谷歌上搜索了一下,虽然我不完全理解为什么这似乎是一个已知问题。我试图将 exec-maven-plugin 升级到 1.3.2,但失败了,这就是上面的问题。实际上,我认为我被误导了,我认为我需要找到一种不同的方法来 运行 代码 (?)。把我带到问题的主旨...
我最常看到的答案(我在Windows环境下工作)有人评论说用maven-ant运行-plugin替换exec-maven-plugin。奇怪的是,虽然我在 Internet 上找到的主要示例并没有真正展示如何做比 运行 echo 命令更多的事情。如果我理解正确的话,我需要 运行 Ant exec 命令到 运行 来自 Main proc 的代码,并且可能 运行 另一个脚本来在完成时停止主线程(我什至实际上不太清楚)。我只是无法理解我应该在脚本中做什么。我应该查看 Ant 文档来弄清楚如何构建 build.xml 文件(我假设不是,因为它是一个 Maven 应用程序,这似乎是一个倒退的步骤)或者我应该 运行ning一些执行某些任务的 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 class,那么将以下行添加到您的 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>
注意目标标签之间的部分。您需要处理 classpath 等
的配置
如果这最终成为一个愚蠢的问题,我深表歉意,我现在有点不知所措...
这与之前的问题有关
Upgrading exec-maven-plugin from 1.1.1 to 1.2 or 1.3.2
基本上我有一个 Maven java 应用程序,它是从 Jenkins 中的命令行 运行(或命令 window 进行测试)。它 运行 是一些在主服务器上需要一个小时左右的处理(在较小的机器上需要 2 天!)。它已经是 运行 exec-maven-plugin 1.1.1。我最近更新了一些依赖项,奇怪的是它现在挂在处理结束时它以前没有的地方。我在谷歌上搜索了一下,虽然我不完全理解为什么这似乎是一个已知问题。我试图将 exec-maven-plugin 升级到 1.3.2,但失败了,这就是上面的问题。实际上,我认为我被误导了,我认为我需要找到一种不同的方法来 运行 代码 (?)。把我带到问题的主旨...
我最常看到的答案(我在Windows环境下工作)有人评论说用maven-ant运行-plugin替换exec-maven-plugin。奇怪的是,虽然我在 Internet 上找到的主要示例并没有真正展示如何做比 运行 echo 命令更多的事情。如果我理解正确的话,我需要 运行 Ant exec 命令到 运行 来自 Main proc 的代码,并且可能 运行 另一个脚本来在完成时停止主线程(我什至实际上不太清楚)。我只是无法理解我应该在脚本中做什么。我应该查看 Ant 文档来弄清楚如何构建 build.xml 文件(我假设不是,因为它是一个 Maven 应用程序,这似乎是一个倒退的步骤)或者我应该 运行ning一些执行某些任务的 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 class,那么将以下行添加到您的 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>
注意目标标签之间的部分。您需要处理 classpath 等
的配置