【问题标题】:How to build an ant target from DOS command-line when target starts with a '-' as in -ivy-info当目标以'-'开头时如何从DOS命令行构建ant目标,如-ivy-info
【发布时间】:2013-05-15 15:32:13
【问题描述】:

在解决 apache-ivy 的问题时,我想调用我的 build.xml 中定义的名为 -ivy-infoant 目标。我的 -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 的新空目标一个依赖。

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

【问题讨论】:

    标签: ant build-automation


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 2011-04-27
      • 2013-05-22
      • 2014-05-24
      • 2018-01-22
      • 1970-01-01
      • 2011-08-19
      相关资源
      最近更新 更多