25

Ant には<include>タスクとタスクの両方があることがわかりました<import>

説明によると:

含む

別のビルド ファイルを現在のプロジェクトに含めます。

輸入

別のビルド ファイルを現在のプロジェクトにインポートします。

では、なぜ一方を他方に使用するのでしょうか。

これが私の実際の問題です:

現在のビルド システムでは、多数の JavaScript を連結してから最小化しています。JavaScript は 12 の異なるディレクトリに配置されており、各ディレクトリからバッチを取得し、それらを 5 つまたは 6 つの超最小化された JavaScript に連結しています。これらのファイルの一部は、複数のスーパー JavaScript にコピーされます。

デバッグを容易にし、ビルドをもう少し柔軟にするために、すべてのファイルをtarget/work/resources2ディレクトリにコピーし、その下の各サブディレクトリが異なる超最小化された JavaScript を表すようにします。デバッグの目的で、最小化されていないスーパー JavaScript とオリジナルを含めます。ビルド スクリプトは複雑ではありませんが、セクション全体が多くの行を占めています。別の XML ファイルに入れることを考えていた<copy>ので、全体は次のようになります。

<target name="process-resources"
     description="Concatenate and minimize the JavaScripts (using Maven lifecycle names for our targets">
     <!-- The following include the copying stuff -->
     <here.be.dragons file="${basedir}/reservations.xml"/>
     <here.be.dragons file="${basedir}/date.xml"/>
     <here.be.dragons file="${basedir}/select.xml"/>

     <for param="concat.dir">
         <fileset dir="${work.dir]/resources2"/>
         <sequential>
            <here.I.am.concatenating.and.minimizing/>
         </sequential>
    </for>
</target>

次の 4 つの可能性があることがわかりました。

  • <ant/>コピーを行うファイルを呼び出すために使用します
  • 使用<import/>(ターゲット内に含めることができない可能性があるため、機能しない可能性があります)
  • 使用<include/>(ターゲット内に含めることができない可能性があるため、機能しない可能性があります)
  • エンティティ インクルードを使用します。

私はこれを行うのに良い時期かもしれませんが、<ant/>またはを使用することに夢中になったことはありません. <antcall>エンティティ インクルードのアイデアはうまくいきますが、それはほとんどの人が理解していないことであり、私がやっていることをサポートしなければならない人々を混乱させるのではないかと心配しています。<import>とはこの<include>状況では使用できないかもしれませんが、それでも違いは何なのか気になります。

4

1 に答える 1

34

import のドキュメントは違いを説明しています:

インポートはインクルードとどう違うのですか?

短いバージョン: ターゲットをオーバーライドする場合は import を使用し、それ以外の場合は include を使用します。

インポートを使用する場合、インポートされたターゲットは最大 2 つの名前で利用できます。接頭辞なしの「通常の」名前で、場合によっては接頭辞付きの名前 ( as 属性の値またはインポートされたプロジェクトの name 属性がある場合)。

include を使用する場合、含まれるターゲットはプレフィックス付きの形式でのみ使用できます。

インポートを使用する場合、インポートされたターゲットの depends 属性は変更されません。つまり、「通常の」名前が使用され、依存関係リスト内のターゲットをオーバーライドできます。

インクルードを使用する場合、インクルードされたターゲットをオーバーライドすることはできず、依存する属性が書き換えられるため、接頭辞付きの名前が使用されます。これにより、インクルード ファイルの作成者は、依存関係の一部としてどのターゲットを呼び出すかを制御できます。

異なるプレフィックスを使用して同じファイルを複数回含めることは可能ですが、同じファイルを複数回インポートすることはできません。

于 2013-01-07T20:28:53.350 に答える