我可以运行以下终端命令:
security cms -D -i ../MyMobileProvision.mobileprovision > provision.plist
但是,当我在Ant中运行它时,来自完全相同目录中的ant脚本,终端声称配置文件不存在,它为provision.plist创建一个空文件,这搞砸了下一步在我的过程中。蚂蚁代码如下所示:
<exec executable="security">
<arg line="cms -D -i ../MyMobileProvision.mobileprovision > provision.plist" />
</exec>
我错过了关于蚂蚁如何运作的一些内容吗?我不是构建脚本的专家,但是我可以使用../语法来导入属性文件,所以我很困惑为什么相对路径不适用于终端命令,否则它将起作用很好。
答案 0 :(得分:1)
在您的终端命令示例中,代码段...
> provision.plist
...被shell解释为重定向命令。
Ant的<exec>
任务不使用shell来执行命令。相反,> provision.plist
未经修改即传递给security
程序。
要获得所需内容,请使用output
的{{1}}属性。 <exec>
是output
将写入输出的文件的名称:
<exec>
在上面的示例中,我已将<exec executable="security" output="provision.plist">
<arg value="cms" />
<arg value="-D" />
<arg value="-i" />
<arg value="../MyMobileProvision.mobileprovision" />
</exec>
替换为多个<arg line="...">
元素。来自Ant documentation on Command-line Arguments:
强烈建议尽可能避免使用行版本。 Ant将尝试以类似于(Unix)shell的方式拆分命令行,但可能会创建一些与您在某些情况下所期望的非常不同的东西。