0

在解决apache-ivy的问题时,我想调用我的 build.xml 中定义的名为-ivy-info的ant目标。我的 -ivy-info 目标调用ivy:info任务和ivy:buildnumber任务并计算下一个修订号。

问题是 ant 命令行将 -ivy-info 解释为命令行选项然后失败:Unknown argument: -ivy-info

我发现的一个解决方法是通过 build.xml: 的第一行将默认目标更改为 -ivy-info <project name="my.project" default="-ivy-info">,然后运行不带参数的 ant,效果很好。

其他选项是重命名 -ivy-info 目标,使其不以“-”字符开头,或者创建一个名称不以“-”开头的新空目标,并将 -ivy-info 作为依赖项。

但是我仍然想知道是否有任何方法不涉及首先编辑构建文件

4

1 回答 1

1

任何以“-”开头的内容都将被解释为命令行参数,而不是目标。例如,有类似ant -f build-actual.xmlor的用法ant -Dproperty=value——它们都是 Ant 的命令行参数。如果你-ivy-info从命令行传递,当然,它被视为一个参数。

-ivy-info由于参数解析,无法直接从命令行运行;并将其指定为默认目标有效,因为它是由 xml 解析器而不是命令行参数解析器解析的。

这样,在编写构建文件时,可以使用“-”来防止直接从命令行调用目标(就像privateOO 语言中的方法一样)。如果构建文件不是您编写的,那么作者不希望您直接从命令行运行它。

如果您确定可以直接从命令行调用目标,只需重命名即可。

于 2013-05-21T02:23:23.727 回答