2

プロジェクトをswfファイルにコンパイルするANTファイルに次のコードスニペットがあります。

<target name="my target">
<mxmlc  file="${APPS_DIR}//@{appName}.mxml" 
    output="${DEPLOY_APPS_DIR}/@{appName}.swf" 
    actionscript-file-encoding="UTF-8" 
    keep-generated-actionscript="false" 
    optimize="true" 
    debug="${DEBUG_TF}" 
    locale="en_US"
    static-rsls="false"
    static-link-runtime-shared-libraries="false"
    verify-digests="false"> 
<!-- BEGIN code A -->
...
...
...
<!-- END code A -->
</mxmlc>
</target>

同様にコードAを使用するファイルがたくさんあるので、このコードを含む分離可能なファイルを作成したいと思います。

しかし、どうすればメインのantファイルから呼び出すことができますか?

4

2 に答える 2

1

私は解決策を見つけました。同時に自分で答えて聞いた。ここで見つけました。

XMLの外部ファイルを含める方法を使用して、パーサーにAntのジョブを実行させることができます。

<?xml version="1.0"?>
<!DOCTYPE project [
       <!ENTITY common SYSTEM "common.xml">
]>
<project name="test" default="test" basedir=".">
  <target name="setup">
    ...
  </target>
  &common;
  ...   
</project>
于 2012-06-20T07:51:25.090 に答える
1

を使用しimportます。これはエンティティ インクルードと同じことを行いますが、ターゲットをオーバーライドする機能も提供し、インポートされた ant ファイルへのパスなどの特別なプロパティを提供します。importドキュメントから:

たとえば、builddocs という名前の docsbuild.xml ファイルをインポートすると、メインのビルドファイルの ant.file プロパティと同様に、そのパスを ant.file.builddocs として取得できます。

更新しました(元の質問を正しく読んでいなかったため)

インポートしたファイル内にpresetdef、次のようなものを作成します

<presetdef name="mxmlc" uri="com.chercheinfo">
   <mxmlc> 
<!-- BEGIN code A -->
...
...
...
<!-- END code A -->
   </mxmlc>
</presetdef>

次に、ターゲットを次のように変更できます。

<target name="my target">
    <kaissun:mxmlc  file="${APPS_DIR}//@{appName}.mxml" 
        output="${DEPLOY_APPS_DIR}/@{appName}.swf" 
        actionscript-file-encoding="UTF-8" 
        keep-generated-actionscript="false" 
        optimize="true" 
        debug="${DEBUG_TF}" 
        locale="en_US"
        static-rsls="false"
        static-link-runtime-shared-libraries="false"
        verify-digests="false"> 
    </kaissun:mxmlc>
</target>

(バインド先の要素に次の属性xmlns:kaissun="com.chercheinfo"を追加する必要があります)projectkaissuncom.chercheinfo

を使用presetdefして、共通の属性を事前設定することもできます。例えば、

<presetdef name="mxmlc" uri="com.chercheinfo">
   <mxmlc actionscript-file-encoding="UTF-8"
       keep-generated-actionscript="false"
       optimize="true"
       locale="en_US"
       static-rsls="false"
       static-link-runtime-shared-libraries="false"
       verify-digests="false"> 
<!-- BEGIN code A -->
...
...
...
<!-- END code A -->
   </mxmlc>
</presetdef>

ターゲットを縮小することができます

<target name="my target">
    <kaissun:mxmlc  file="${APPS_DIR}//@{appName}.mxml" 
        output="${DEPLOY_APPS_DIR}/@{appName}.swf" 
        debug="${DEBUG_TF}"> 
    </kaissun:mxmlc>
</target>

:D

于 2012-06-20T10:53:09.457 に答える