2011-08-08 9 views
14

文字通りターゲットをオーバーライドするか、これを何とかエミュレートする可能性はありますか?Antでのターゲットのオーバーライド

<target name="release"> 
    <antcall target="release" /> <!-- call previous version, not recursion --> 
    <do-something /> 
</target> 

を私はAndroidの例に説明します、それは意味があると思う:

我々が持っている、私はそれがこのように動作します

<target perform-after="release"> 
    <do-something /> 
</target> 

を呼び出すので

.xml SDKフォルダ({$SDK}/tools/ant/*.xml)内のbuild.xmlごとにテンプレートが作成され、これらのファイルはすべて、eac用に生成されたbuild.xmlに含まれていますhプロジェクト。空で使い易い-pre-compile,-pre-buildおよび-post-compileのターゲットしかありません。しかし、たとえば空の-post-releaseターゲットはありません。 Googleはbuild.xml個のコメントをコピーして自分のbuild.xmlにコピーしてから調整することをおすすめします。しかし、私はそれが大丈夫ではないと思う。なぜなら、Googleがテンプレート内のこの目標の中の何かを変えるなら、私は古いバージョンを使用していることを決して知らないだろうから。

答えて

24

importタスクの「ターゲットオーバーライド」セクション、またはincludeタスクの「ターゲット書き換え」セクションを参照してください。要するに、common build.xmlに "common"のようなプロジェクト名を付け、antcallに "common.release"を使用します。

antcallは、実行時に新しいプロジェクトを開始するため、同じではないことに注意してください。これは、ターゲットによって設定された変数が後で表示されないことを意味します。私はテストする場合は、このマシン上で利用できるAntの必要はありませんが、antcall避けるために、このような何かを試してみてください:

<target name="release" depends="common.release, -post-release"/> 
+1

クール、それは私が思っていたことだと誰が私に答えていない)ありがとうを! –

+1

それがうまくいって、私は確信しています。 –

関連する問題