首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蚂蚁规则/任务,可以将可变数量的cmd行参数转发给任务

蚂蚁规则/任务,可以将可变数量的cmd行参数转发给任务
EN

Stack Overflow用户
提问于 2011-09-22 19:37:03
回答 1查看 730关注 0票数 1

我想要一个包含命令行传递的参数的ant任务。命令行参数可以在数量上有所不同,特别是针对ant中的任务。

我想在命令行中这样做:

代码语言:javascript
复制
$ ant run foo bar ...

理想情况下,"foo“和"bar”以及其他参数“.”将作为尾随参数传递给任务中创建的java实例。

java将看到:

代码语言:javascript
复制
    $ java -classpath ./output Foobar foo bar ...

换句话说,我希望同样的蚂蚁任务做以下工作:

代码语言:javascript
复制
$ 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"

我想这看起来可能是:

代码语言:javascript
复制
<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>

注意这一行

代码语言:javascript
复制
            <arg line="$@"/>

我想象上面这样的东西会将所有剩下的参数传递给java实例。(本问题的目的是找出这一特定的蚂蚁机制)。

我为这个需要预先配置的ant变量所看到的方法。那是,

代码语言:javascript
复制
 $ ant run -DARG1="foo" -DARG2="bar" ...

但该方法排除了可变长度参数列表。

有谁知道可以转发给蚂蚁任务的变量数的方法(最好不需要编写一组复杂的蚂蚁规则)?

EN

回答 1

Stack Overflow用户

发布于 2011-09-22 21:14:18

这并不容易,因为Ant的命令行如下所示:

代码语言:javascript
复制
ant [options] [target [target2 [target3] ...]]

这意味着变量arg列表foo bar baz项将被视为目标,从而导致运行类似名称的Ant目标,或者在不存在时引发Ant抛出错误。

一个选项是使用-Doption=value语法通过包装器脚本传递变量参数列表。也许:

代码语言:javascript
复制
ant -classpath ./output -Dmy_args=\"$@\" Foobar

在shell脚本中,然后利用java任务中传递的arg:

代码语言:javascript
复制
<arg line="${my_args}"/>

另一种选择是编写一个Java ()类,该类将接受您希望的参数,然后为您调用Ant。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7520434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档