如何使用类路径执行外部 jar 并使用 ant 具有 CI 参数

How to execute an external jar with classpath and also having CI argument using ant

我有一个情况,我已经有一个罐子了。我不需要使用 ant 创建另一个 jar。另外,类路径也应该添加。

所以我的主要目标是 运行 使用 ant

例子如下:

java -cp myjar.jar -DParameterA=A -DParameterB=B com.mypackagename.package.ClassName

下面我也有参考:

https://ant.apache.org/manual/Tasks/java.html

我正在使用如下命令:

 ant -Dcom.test=TEST1 targetName

在 ant 的 build.xml 中,我正在尝试如下所示的操作:

<target name="readclass">
    <java classname="${read-class}">
         <classpath>
           <pathelement location="myjar.jar"/>
         </classpath>
         <jvmarg value="-Xlingc"/>
         <arg value="${com.test}"/>
    </java>
</target>

但是使用我上面的代码我无法传递参数。 任何建议都会有帮助!!

命令行上有不同种类的参数。 class 名称之前的参数是 JVM 使用和使用的参数,您可以通过 Ant 的 java 任务中的 jvmarg 设置它们。 class 名称后的参数被发送到您的 class 并且您通过 arg.

设置它们

jvmarg 的一个特例是系统 属性,当您使用命令行时,它是通过 -Dname=value 在 class 名称之前设置的。 Ant 为此提供 sysproperty

jvmargs 要求将任务的 fork 属性设置为 true,因为默认设置为 运行 class 在同一 JVM 中执行 Ant 和因此,对此的论据已经确定。这不适用于适用于所有 fork 设置的 sysproperty

如果有疑问 运行 ant -verbose 将为您提供 Ant 实际使用的命令行参数。

扩展的@Stefan Bodewig 回答..下面是对我有用的蚂蚁块

<target name="readclass">
    <java classname="${read-class}" fork="true" failonerror="true">
         <classpath>
           <pathelement location="myjar.jar"/>
         </classpath>
         <sysproperty key="com.test" value="${com.test}"/>
         <sysproperty key="com.country" value="${com.country}"/>
    </java>
</target>