2016-09-07 57 views
0

运行它,我可以就好运行以下终端命令:但是终端命令的作品,而不是当我在蚂蚁

security cms -D -i ../MyMobileProvision.mobileprovision > provision.plist 

,当我在蚂蚁的确切同一目录下运行,从ant脚本,终端声明供应文件不存在,它为provision.plist创建一个空文件,这将我的流程中的下一步搞砸了。蚂蚁代码看起来像这样:

 <exec executable="security"> 
      <arg line="cms -D -i ../MyMobileProvision.mobileprovision > provision.plist" /> 
     </exec> 

我错过了一些关于蚂蚁如何工作?我并不擅长构建脚本,但是我可以使用../语法来导入属性文件,所以我很困惑为什么相对路径不适用于终端命令,否则它可以正常工作。

回答

1

在终端命令例如,片断...

> provision.plist 

...是由您壳作为重定向命令解释。

Ant的任务<exec>不使用shell来执行命令。相反,> provision.plist未经修改就传递给security程序。

为了得到你想要的,使用<exec>output属性。 output是一个文件,其中<exec>将写入输出的名称:

<exec executable="security" output="provision.plist"> 
    <arg value="cms" /> 
    <arg value="-D" /> 
    <arg value="-i" /> 
    <arg value="../MyMobileProvision.mobileprovision" /> 
</exec> 

在上述例子中,我已与一些<arg value="...">元素取代了<arg line="...">。从Ant documentation on Command-line Arguments推理:

强烈建议尽可能避免行版本。 Ant会尝试以类似于(Unix)shell的方式拆分命令行,但可能会创建与您在某些情况下所期望的内容完全不同的内容。

+0

这工作完美!谢谢!从ant文档中很难理解这样的事情。向前走,我会把个别参数放在他们自己的标签中。 –

+0

@Sly_Boots我很高兴我的回答有帮助。请接受这个答案。 –