当目标以';开头时,如何从DOS命令行构建ant目标-';如常春藤信息

当目标以';开头时,如何从DOS命令行构建ant目标-';如常春藤信息,ant,build-automation,Ant,Build Automation,在对问题进行故障排除时,我想调用在my build.xml中定义的名为-ivy info的目标。My-ivy info target调用任务和任务,并计算下一个修订号 问题是ant命令行将-ivy info解释为一个命令行选项,然后失败为:未知参数:-ivy info 我发现的一个解决方法是通过build.xml:的第一行将默认目标更改为-ivy info,然后不带参数地运行ant,这很好 其他选项包括重命名-ivy info目标,使其不以“-”字符开头,或者创建一个新的空目标,其名称不以“-”

在对问题进行故障排除时,我想调用在my build.xml中定义的名为-ivy info的目标。My-ivy info target调用任务和任务,并计算下一个修订号

问题是ant命令行将-ivy info解释为一个命令行选项,然后失败为:
未知参数:-ivy info

我发现的一个解决方法是通过build.xml:
的第一行将默认目标更改为-ivy info,然后不带参数地运行ant,这很好

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

但是,我仍然想知道是否有任何方法不需要首先编辑构建文件?

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

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

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

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