1

ある種のプラグインとしていくつかのファイルを含む Ant ビルドファイルを作成したいと考えています。

したがって、プロジェクト内の機能を有効にしたい場合 (たとえば、pmd-checking など)、ディレクトリに pmd.xml をコピーすると、build.xml が最初に着想を得て、pmd.xml が存在し、それをインポートすることで、新しいビルドでターゲットを使用できます。

しかし、「インポート」タスクはトップレベルのタスクとしてしか使用できないため、この機能を再利用する方法がわかりません。これは Ant で可能ですか?もしそうなら、どうすればできますか?

編集: によって提示されたリストに新しいターゲットが表示されるようにするソリューションを希望しant -pます。

4

4 に答える 4

3

Antタスクを使用して、ターゲット名をパラメーター化することもできます。次に例を示します。

<ant antfile="plugins/pmd.xml" target="${pmd-target}"/>

より柔軟性が必要な場合は、gantまたはgradleを確認することをお勧めします。

于 2008-11-13T00:44:53.810 に答える
3

インポートタスクのドキュメントで、optional属性に注意してください。これを に設定するtrueと、欠落しているインクルードによってビルドが中断されることはありません。

見つかった場合は含まれますが、そうpmd.xmlでない場合はビルドを壊しません。

テストされていないためant -p、インポートされたファイルにターゲットが見つかった場合にそれを含めることに肯定的ではありません。

于 2008-11-13T02:42:12.560 に答える
2

インポートタスクのドキュメントには明示的に記載されていませんが、タスクは単一ファイルの代わりにファイルセットを受け入れます。したがって、これはトップレベルでトリックを実行する必要があり、作成されたターゲットは次のように一覧表示されant -pます。

<property name="plugins.dir" value="plugins" />
<fileset id="plugin.modules" dir="${plugins.dir}">
    <include name="**/*.xml" />
</fileset>

<import>
    <fileset refid="plugin.modules" />
</import>

これに関する1つの問題は、「plugins」ディレクトリに少なくとも1つのプラグインが存在する必要があることです。そうでない場合、インポートは失敗します。プレースホルダーファイルを作成するだけです-たとえばempty.xml

 <project />

それができたら、プラグインディレクトリに新しいプラグインを配置するだけで、将来のビルドでインポートされます。

于 2011-01-09T14:45:27.743 に答える
0

概念的に可能であるかどうかはわかりません。コマンドライン引数は-pタスクを実行せず、ファイルを解析するだけです。あなたが望むものは何かを実行する必要があるでしょう。

しかし、私はant-contribプロジェクトを見てみます。条件付き<if>タスクがあり、必要な場合にのみトップレベルのインポートを機能させることができます。

于 2008-11-13T01:19:06.333 に答える