Ant执行命令

时间:2013-10-22 18:41:49

标签: ant exec

我使用Silk4J,在我的构建中,我必须启动代理。我使用的命令是:

<exec spawn="true" executable="${env.OPEN_AGENT_HOME}/agent/openAgent.exe" />

它给了我这个错误

The ' characters around the executable and arguments are not part of the command. 

我需要更改吗?

3 个答案:

答案 0 :(得分:4)

该消息并不表示错误。

-v-verbose-d-debug选项授予Ant时,<exec>任务会输出正在执行的命令以及消息:

 [exec] Current OS is Windows 7
 [exec] Executing 'cmd' with arguments:
 [exec] '/c'
 [exec] '@for %a in (C:\src\ant\ant-dir-file-local) do @echo %~ta'
 [exec]
 [exec] The ' characters around the executable and arguments are
 [exec] not part of the command.
 [exec] 10/23/2013 02:36 AM

分解上面的例子......

 [exec] Executing 'cmd' with arguments:
                  ^   ^ 
 [exec] '/c'
        ^  ^
 [exec] '@for %a in (C:\src\ant\ant-dir-file-local) do @echo %~ta'
        ^                                                        ^

在这种情况下,每个'上方的单引号(^)不是命令的一部分。 Ant使用单引号包装可执行文件名和每个参数,以明确命令的哪一部分以及哪些不是。当<exec>没有按预期运行时,Ant会这样做以帮助用户调试他们的Ant脚本。该消息纯粹是信息性的。

答案 1 :(得分:2)

最好将记录的条目包装在单引号中,这样如果条目为空,您仍然可以看到它,例如:

  

没有用户''

的密码

否则你会看到:

  

没有用户密码

这是误导。 在这种情况下,它仅通知您引号仅出于此原因而不是记录数据的一部分。我认为这句话有点令人困惑,因为负面形式'不是命令的一部分'看起来有问题......

答案 2 :(得分:0)

这纯粹是提供信息的。它表示您在上面看到的撇号(')符号实际上并不在已使用的命令中。 它只是“引用”您在命令中使用的字符串标记。

示例:

 [exec] Current OS is Windows 10
 [exec] Output redirected to property: git.timestamp
 [exec] Executing 'cmd.exe' with arguments:
 [exec] '/c'
 [exec] 'git'
 [exec] 'show'
 [exec] '-s'
 [exec] '--format=%ct'
 [exec]
 [exec] The ' characters around the executable and arguments are
 [exec] not part of the command.

这表示你在cmd中使用了 / c git show -s --format =%ct ,你可以从'/ c'中看到,<强>'git'令牌。它只是告诉您忽略'符号。它实际使用的是链中的git,show,-ss等标记,形成一个完整的命令。