Apache Ant フロントエンド: ProjectHelper

ProjectHelperとは?

Apache AntのProjectHelperは、ビルドファイルの解析と、ビルドワークフローを表すJavaインスタンスの作成を担当します。また、解析可能なファイルの種類と、デフォルトの入力ファイルとして想定されるファイル名を通知します。

AntのデフォルトのProjectHelperorg.apache.tools.ant.helper.ProjectHelper2)は、通常のbuild.xmlファイルを解析します。コマンドラインでビルドファイルが指定されていない場合、build.xmlという名前のファイルが見つかることを想定します。

このような抽象化の直接的な利点は、AntがXML以外の記述言語を理解できるようにすることが可能になることです。純粋なJavaフロントエンドとGroovyフロントエンドの実験が行われています(これらの詳細については、開発者メーリングリストにお問い合わせください)。

Ant 1.8.2以降importタスクは、インポートされたファイルを解析するために適切なヘルパーを使用しようとします。そのため、異なる言語で異なるビルドファイルを記述し、それらを相互にインポートすることが可能です。

Antはどのように適切なProjectHelperを選択するか

AntはProjectHelperの複数の実装を認識しており、各ビルドファイルにどれを使用するかを決定する必要があります。

起動時に、Antは見つかったすべての実装をリストし、それらが見つかったのと同じ順序で内部の「リポジトリ」に保持します。

ProjectHelperのインスタンス化中にエラーが発生した場合、Antはエラーをログに記録しますが、停止しません。ProjectHelper内部の「リポジトリ」に関する詳細なデバッグ情報が必要な場合は、システムプロパティant.project-helper-repo.debugを使用し、それをtrueに設定します。完全なスタックトレースも出力されます。

Antがファイルを解析する必要がある場合、ProjectHelperリポジトリに、入力ファイルを解析できる実装を見つけるように要求します。実際には、順序付けられたリストを反復処理し、supportsBuildFile(File buildFile)trueを返す最初の実装が選択されます。

Antが起動され、入力ファイルが指定されていない場合、デフォルトの入力ファイルを検索します。ProjectHelperのリストを反復処理し、実際に存在するデフォルトファイルを想定している最初のものを選択します。

独自のProjectHelperを作成する

クラスorg.apache.tools.ant.ProjectHelperは、実装されることが期待されるAPIです。そのため、この抽象クラスを拡張して独自のProjectHelperを作成します。その後、少なくとも関数parse(Project project, Object source)を実装する必要があります。また、実装はAntによってインスタンス化され、引数のないデフォルトコンストラクターが想定されていることに注意してください。

ヘルパーの機能と期待される内容を定義するのに役立つ関数がいくつかあります。

実装の準備ができたので、Antに宣言する必要があります。ここでは3つの解決策があります。