2

私はまだ ANT の使い方を学んでいますが、Rake や Make と同様に、ANT でファイル タスクを実行する合理的な方法があるかどうかを知りたいと思いました。

http://martinfowler.com/articles/rake.html#FileTasks

「ファイルでは、タスク名ではなく実際のファイルを参照しています。したがって、'build/dev/rake.html' と 'dev/rake.xml' は実際のファイルです。html ファイルは、このタスクの出力と xml ファイルです。ファイル タスクは、ビルド システムに出力ファイルの作成方法を伝えるものと考えることができます。実際、これはまさに make の概念です。必要な出力ファイルをリストし、make にそれらの作成方法を指示します。

ファイル タスクの重要な部分は、実行する必要がない限り実行されないことです。ビルド システムはファイルを確認し、出力ファイルが存在しない場合、またはその変更日が入力ファイルよりも古い場合にのみタスクを実行します。したがって、ファイル単位で物事を考えている場合、ファイル タスクは非常にうまく機能します。」

つまり、カスタム バイナリを実行したいとしましょう。ファイルのいずれかが変更された場合にのみ、そのバイナリを実行したいとします。これはこの質問に関連していますが、ファイルセットの一部を渡すだけでなく、バ​​イナリをまったく実行したくありません (つまり、ファイルセットには 1 つしかなく、ツールをまったく実行したくありません)。 .

理想的なソリューションは、大したことではありませんが、ANT JavaScript またはカスタム タスクを使用して、任意のターゲットに簡単に適用できますか?

4

1 に答える 1

1

ant-contribの古いタスクを使用します。それはまさにあなたが求めている特性を持っています。これがant-contribのWebサイトです。

これをビルドに統合する方法のテンプレートは次のとおりです。

<taskdef
  resource="net/sf/antcontrib/antlib.xml"
>
  <classpath>
    <pathelement location="${ant-contrib.jar}"/>
</taskdef>

<outofdate>
 <sourcefiles path="dev/rake.xml"/>
 <targetfiles path="build/dev/rake.html"/>
 <sequential>
   ... do your work here ...
   ... will only run if rake.html is older than rake.xml ...
 </sequential>
</outofdate>
于 2009-10-26T12:55:38.693 に答える