16

これを行う簡単な方法があるはずです。SWC ライブラリに依存する ant を使用して Flex アプリを構築します。これは、必要かどうかに関係なくライブラリを再構築することを除いて、正常に動作します。ライブラリのソース ファイル (*.as、*.mxml) のいずれかが SWC よりも新しい場合にのみタスクを実行するように ant に指示するにはどうすればよいですか?

<dependset> を見てきましたが、ファイルを削除するだけで、タスクを実行する必要があるかどうかを判断していないようです。<depend> は、ソース ファイルとターゲット ファイルの間に 1 対多の関係ではなく、1 対 1 の関係を想定しているようです。多くの入力ファイルと 1 つの出力ファイルがありますが、中間オブジェクト ファイルはありません。

どうもありがとう、アレックス

4

2 に答える 2

21

Ant uptodate タスクを使用してプロパティを作成し、そのプロパティが設定されている場合にのみ他のターゲットを実行できます。

フレックスについてはよくわかりませんが、おそらく次のようなものが必要です。

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="compile">

   <target name="checkforchanges">
      <uptodate property="nochanges">
         <srcfiles dir="." includes="**/*.as"/>
         <srcfiles dir="." includes="**/*.mxml"/>
         <mapper to="applicaton.flex"/>
      </uptodate>
   </target>

   <target name="compile" depends="checkforchanges" unless="nochanges">
      ...
   </target>

</project>
于 2009-02-02T17:23:23.390 に答える
10

ant contribライブラリのOutOfDateタスクは、Antオプションよりも IMO がはるかにクリーンです。その理由は、プロパティを設定するためだけに追加のターゲットを定義する必要があるためです。uptodate

Ant contrib を使用したソリューション (例のページから):

<outofdate>
    <sourcefiles>
        <pathelement path="build.xml"/>
        <fileset dir="${lib.dir}"/>
    </sourcefiles>
    <targetfiles path="${jrun.file}"/>
    <sequential>
        <mkdir dir="${build.bin.dir}"/>
        <echo file="${jrun.file}" message="java -cp ${jrun.path} $*"/>
        <chmod file="${jrun.file}" perm="ugo+rx"/>
    </sequential>
</outofdate> 

すべてが 1 つのターゲット内に適切に保持されます。

于 2009-02-05T21:44:52.643 に答える