gpt4 book ai didi

java - 通过 ant macrodef 传递变量命令行参数

转载 作者:行者123 更新时间:2023-11-30 10:58:27 26 4
gpt4 key购买 nike

我有一个 java 程序 MyClass,它接受一个必需的参数 reqArg 和一个可选的参数 myOptionalArg。我正在尝试为此编写 Ant 目标。

  <macrodef name="run-class">
<attribute name="reqArg" />
<sequential>
<condition property="additionalArgs" value="${args}" else="">
<isset property="args" />
</condition>
<java classname="MyClass" failonerror="true" fork="true" classpath="${classpath}">
<arg line="--reqArg @{reqArg}" />
<arg line="${additionalArgs}" />
</java>
</sequential>
</macrodef>

<!--Separate target for each value of reqArg -->
<target name="run-class-arg1">
<run-class reqArg="arg1"/>
</target>

通过上面我可以像这样成功地调用程序并且它可以工作:

ant run-class-arg1 -Dargs="--myOptionalArg value"

有没有一种方法可以调整上面的目标,以便调用者可以直接执行以下操作而无需显式键入 -Dargs="..."。它会让调用者更容易一些,而不是记住语法。

ant run-class-arg1 --myOptionalArg value

谢谢

最佳答案

我不知道有什么方法可以将任意参数直接传递给 Ant。

相反,考虑将对 Ant 的调用包装在 shell 脚本或批处理脚本中。

测试build.xml

<project name="ant-shell-arbitrary-args">
<echo>${myArgs}</echo>
</project>

名为 call-ant.sh 的 Bash 脚本

#!/bin/bash
ant -DmyArgs="$*"

例子:

$ ./call-ant.sh hi there
...
[echo] hi there

名为 call-ant.bat 的 Windows 批处理脚本

@echo off
ant -DmyArgs="%*"

例子:

C:\>call-ant.bat hi there
...
[echo] hi there

关于java - 通过 ant macrodef 传递变量命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32237770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com