2016-09-07 3 views
0

でそれを実行したとき、私はちょうど罰金以下のターミナルコマンドを実行できます。ターミナルコマンドの動作ではなく、私はAntの

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> 

蟻の仕組みが分かりません。私はビルドスクリプトでは専門家ではありませんが、../構文を使用してプロパティファイルを正常にインポートすることができます。なぜなら、そうでなければそれで正常に動作する端末コマンドに対して相対パスが機能しない理由が混乱しています。お使いの端末のコマンド例では

答えて

1

、スニペット...

> provision.plist 

は...リダイレクトコマンドとしてシェルによって解釈されます。

<exec> Antのタスクは、コマンドを実行するシェルを使用しません。代わりに、> provision.plistは変更されずにsecurityプログラムに渡されます。

output属性を使用するには、<exec>を使用します。 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シェルと同様の方法でコマンドラインを分割しようとしますが、状況によっては期待していたものとは非常に異なるものを作成する可能性があります。

+0

これは完璧に機能しました。ありがとうございました!このようなことをアリのドキュメントから掘り起こすのは難しいです。私は個々のargsを自分のタグに入れます。 –

+0

@Sly_Boots私の答えが助けてくれてうれしいです。この回答を受け入れてください。 –

関連する問題