我想要一个包含命令行传递参数的ant任务。命令行参数的数量可能不同。 具体来说,对于< java>蚂蚁内的任务。
我想在命令行上执行此操作:
$ ant run foo bar ...
理想情况下,“foo”和“bar”以及其他参数“...”将作为尾随参数传递给在< java>中创建的java实例。任务。
java会看到:
$ java -classpath ./output Foobar foo bar ...
换句话说,我想要同样的蚂蚁< java>任务执行以下操作:
$ ant run foo
# executes "java -classpath ./output Foobar foo"
$ ant run foo bar
# executes "java -classpath ./output Foobar foo bar"
$ ant run foo bar baz
# executes "java -classpath ./output Foobar foo bar baz"
我想这可能看起来像:
<project name="Foobar" basedir=".">
<property name="build" location="output"/>
<target name="run" >
<java failonerror="true" classname="Foobar" fork="true">
<classpath>
<dirset dir="${build}" />
</classpath>
<arg line="$@"/>
</java>
</target>
</project>
注意这一行
<arg line="$@"/>
我想象上面会将所有剩余的参数传递给java实例。 (本课题的目的是找到特定的蚂蚁机制)。
我见过的require preconfigured ant variables方法。也就是说,
$ ant run -DARG1="foo" -DARG2="bar" ...
但该方法排除了可变长度参数列表。
有没有人知道可以转发给ant&lt; java&gt;的可变数量参数的方法。任务(最好不要求编写一套复杂的蚂蚁规则)?
答案 0 :(得分:0)
这并不容易,因为Ant的command line看起来像这样:
ant [options] [target [target2 [target3] ...]]
这意味着您的变量arg list foo bar baz
项将被视为目标,导致运行类似命名的Ant目标,或者如果它们不存在则抛出Ant。
一种选择是使用-Doption=value
语法通过包装器脚本传递变量参数列表。也许:
ant -classpath ./output -Dmy_args=\"$@\" Foobar
在shell脚本中,然后使用java
任务中传递的arg:
<arg line="${my_args}"/>
另一种选择是编写一个Java main()类,它将接受你想要的参数,然后为你调用Ant。