トップレベルのマクロから ANT ターゲットを生成する可能性を探していました。
詳細:
ヘテロジェニック ビルド システムがあります。ANT+IVY は最上位として使用されます (継承されたソリューション、変更できません)。一部のプロジェクトは MSBuild を介してビルドされ、実行タスクを介して ANT から呼び出されます。これらのプロジェクトごとに、msbuild への少なくとも 2 つの異なる呼び出し (簡潔にするためにマクロでラップされています) があり、1 つは "ビルド" ターゲットに、もう 1 つは "クリーン" ターゲットにあります。そのうちの 2 つは、「ターゲット」パラメーターのみが異なります。だから私は、次のような可能性があるかどうかを推測していました:
拡張ノード:
<extensionpoint name="build-ext-point" />
<extensionpoint name="clean-ext-point" />
<target name="build" depends="build-ext-point" />
<target name="clean" depends="clean-ext-point" />
私の魔法のマクロ:
<macrodef name="msbuild-proj" />
<attribute name="project" />
<sequential>
<target name="@{project}-build" >
<msbuild project="@{project}" target="Build" />
</target>
<target name="@{project}-clean" >
<msbuild project="@{project}" target="Clean" />
</target>
</sequential>
</macrodef>
使用方法:
<msbuild-proj project="CPP-proj" />
ありがとう!
PS: ええ、オーバーライドされたビルドとクリーンを定義したり、ext ポイントなどを介して定義したりできることはわかっています。問題は、コードの重複を削除できるかどうかです。
UPD:私はこれに自分で答えます。現時点では、その可能性はありません。主に、Target クラスはタスク コンテナーですが、タスクではないためです。そのため、コンテナに入れることはできません。だから私はある種の拡張可能なタスクを書くと思います。