命令行运行任务名称中带有连字符的Ant任务

命令行运行任务名称中带有连字符的Ant任务,ant,Ant,任务名称以连字符“-”开头 用引号将任务名称括起来 ant "-task1" -f test.xml 更新: 从 有些人用破折号启动内部目标只是为了确保用户不能从命令行运行它们。事实上,正是出于这个原因,我将所有内部目标都以-开头作为标准做法 你可以试试老的双短跑技巧。我当前的系统上没有安装Ant,因此无法测试它。双破折号是一种常见的Unix技巧,当您有以破折号开头的文件和内容时,大多数命令都会使用它来帮助结束参数。顺便说一下,任务应该是命令行中的最后一项: $ ant -f test.xml

任务名称以连字符“-”开头


用引号将任务名称括起来

ant "-task1" -f test.xml
更新: 从


有些人用破折号启动内部目标只是为了确保用户不能从命令行运行它们。事实上,正是出于这个原因,我将所有内部目标都以
-
开头作为标准做法

你可以试试老的双短跑技巧。我当前的系统上没有安装Ant,因此无法测试它。双破折号是一种常见的Unix技巧,当您有以破折号开头的文件和内容时,大多数命令都会使用它来帮助结束参数。顺便说一下,任务应该是命令行中的最后一项:

$ ant -f test.xml -- -task1
更糟糕的是,您只需在
build.xml
文件中定义另一个目标,该目标依赖于此目标,并带有破折号:

<task name="sneaky"
    depends="-task1"/>

以连字符开头的目标(如“-restart”)有效,可用于命名不应直接从命令行调用的目标。 对于Ants主类,每个以连字符开头的选项都是Ant本身的选项,而不是目标。因此,无法从命令行调用这些目标

因此,用户无法从命令行使用连字符调用目标


2016年4月21日在Windows平台上测试。

为什么需要用
-
开始任务名称?我正在构建Android项目。由于某些原因,任务名称看起来像“pre-build”。这不起作用,至少在Windows上是这样。错误消息是:未知参数:-task1Sorry这没有帮助,已在linux设备上测试。不知道是否可能。可能是Android团队用“-”来让一些任务从外部看不见。不。引号是shell的权限,它在执行命令时会将其转换为[ant][-[task1],这也是同样的问题。如果带引号的规则名称对您有效,那么不带引号的规则名称也对您有效。关于为什么某些任务以-,开始的信息很好,但我认为正确的答案是David W提供的答案。我不确定为什么将其括在引号中有效-我认为即使在UNIX下也不起作用。遗憾的是,双破折号技巧似乎不起作用。我在Windows和Linux上测试了它,结果发现:
未知参数:-
@MartinMcNulty在CentOS和Ant 1.9.2上也不适用。Ant只是将带有破折号的目标作为一个选项来处理。是的,双破折号不是由shell处理的,而是像其他参数一样提供给被调用的命令。如果
ant
没有以特定的方式处理这一问题,那么它就不会有任何帮助。
Targets beginning with a hyphen such as "-restart" are valid,
and can be used to name targets that should not be called directly
from the command line.
For Ants main class every option starting with hyphen is an option for Ant itself
and not a target. For that reason calling these target from command line is not
possible. On the other hand IDEs usually don't use Ants main class as entry 
point and calling them from the IDE is usually possible.
$ ant -f test.xml -- -task1
<task name="sneaky"
    depends="-task1"/>
$ant -f test.xml sneaky