我想要一个包含命令行传递的参数的ant任务。命令行参数可以在数量上有所不同,特别是针对ant中的任务。。
我想在命令行中这样做:
$ ant run foo bar ...理想情况下,"foo“和"bar”以及其他参数“.”将作为尾随参数传递给任务中创建的java实例。
java将看到:
$ java -classpath ./output Foobar foo bar ...换句话说,我希望同样的蚂蚁任务做以下工作:
$ 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实例。(本问题的目的是找出这一特定的蚂蚁机制)。
我为这个需要预先配置的ant变量所看到的方法。那是,
$ ant run -DARG1="foo" -DARG2="bar" ...但该方法排除了可变长度参数列表。
有谁知道可以转发给蚂蚁任务的变量数的方法(最好不需要编写一组复杂的蚂蚁规则)?
发布于 2011-09-22 21:14:18
这并不容易,因为Ant的命令行如下所示:
ant [options] [target [target2 [target3] ...]]这意味着变量arg列表foo bar baz项将被视为目标,从而导致运行类似名称的Ant目标,或者在不存在时引发Ant抛出错误。
一个选项是使用-Doption=value语法通过包装器脚本传递变量参数列表。也许:
ant -classpath ./output -Dmy_args=\"$@\" Foobar在shell脚本中,然后利用java任务中传递的arg:
<arg line="${my_args}"/>另一种选择是编写一个Java ()类,该类将接受您希望的参数,然后为您调用Ant。
https://stackoverflow.com/questions/7520434
复制相似问题