2

コマンドラインで設定されたプロパティに基づいて、Ant ビルドに Flex ライブラリを条件付きで含める方法を見つけようとして苦労しています。<condition/>私はこのタスクで多くのアプローチを試みましたが、これまでのところうまくいきませんでした。これが私が現在いる場所です。

次のような条件タスクを含む init ターゲットがあります。

 <condition property="automation.libs" value="automation.qtp">
  <equals arg1="${automation}" arg2="qtp" casesensitive="false" trim="true"/>
 </condition>

このタスクの目的は、mxmlc または compc タスクで暗黙的なファイルセットを宣言するときに使用されるパターンセットの名前を決定するプロパティを設定することです。上記のパターン セットは次のように定義されます。

 <patternset id="automation.qtp">
  <include name="automation*.swc"/>
  <include name="qtp.swc"/>
 </patternset>

名前付きパターンセットは、次のように mxmlc または compc タスクによって参照されます。

<compc>
 <compiler.include-libraries dir="${FLEX_HOME}/frameworks/libs" append="true">
  <patternset refid="${automation.libs}"/>
 </compiler.include-libraries>
</compc>

これは機能していないようです。少なくとも、SWC のサイズは、追加の自動化ライブラリがコンパイルされていることを示していません。さまざまなタイプのビルドに使用するパターンセットを決定するコマンド ライン プロパティを指定できるようにしたいと考えています。

これを達成する方法について誰かアイデアがありますか? ありがとう!

4

2 に答える 2

2

<patternset>正しく作業できない場合は、ant-contrib が提供する<if> <then>およびタスクを参照してください。<else>最終的には次のようになりました。

<target name = "build">
    <if>
        <equals arg1="automation.qtp" arg2="true"/>
        <then>
            <!--
               - Build with QTP support.
               -->
        </then>
        <else>
            <!--
               - Build without QTP support.
               -->
        </else>
    </if>
</target>

if 分岐と else 分岐の間にビルド ロジックの重複がいくつかありますが、マクロ定義でラップ<mxmlc>すると、その一部を取り除くことができます。

于 2010-01-12T23:27:17.833 に答える