终端命令可以工作,但在Ant中运行时不行



我可以运行下面的终端命令:

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

但是,当我在Ant中从完全相同目录下的Ant脚本运行它时,终端声称配置文件不存在,并为配置创建了一个空文件。Plist,这打乱了我下一步的进程。ant代码如下所示:

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

我是不是错过了蚂蚁是如何工作的?我不是构建脚本的专家,但我可以使用…/语法导入属性文件很好,所以我很困惑为什么相对路径不能用于终端命令,否则它会工作得很好。

在您的终端命令示例中,代码片段…

> provision.plist

…被shell解释为重定向命令。

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文档中关于命令行参数的推理:

强烈建议尽可能避免使用行版本。Ant将尝试以类似于(Unix) shell的方式拆分命令行,但在某些情况下可能会创建与您期望的非常不同的东西。

相关内容

  • 没有找到相关文章

最新更新