antターゲットをサブディレクトリの複数のbuild.xmlファイルに渡します

StackOverflow https://stackoverflow.com/questions/819568

  •  03-07-2019
  •  | 
  •  

質問

複数のモジュールを持つプロジェクトがあり、それぞれが独自のディレクトリにあります。各モジュールには独自のantビルドファイル(build.xml)があります

ルートディレクトリに、各モジュールのビルドファイルを正しい順序で呼び出す一般的なビルドファイルを設定しました。

<?xml version="1.0"?>
<project name="bridgedb" default="all" basedir=".">
  <target name="all">
    <ant dir="corelib"/>
    <ant dir="tools"/>
    <ant dir="makeGdb"/>
    <ant dir="cytoscape-plugin"/>
  </target>
</project>

各モジュールには、「クリーン」もあります。ターゲットなので、次の行を追加します。

 <target name="clean">
    <ant dir="corelib" target="clean"/>
    <ant dir="tools" target="clean"/>
    <ant dir="makeGdb" target="clean"/>
    <ant dir="cytoscape-plugin" target="clean"/>
  </target>

そして、そのようなターゲットがさらにあります。この重複を回避するためにビルドファイルを書き換える方法はありますか?アクティブなターゲットを含む組み込みプロパティを探しましたが、見つかりませんでした。

役に立ちましたか?

解決

すべてのサブディレクトリを参照するターゲットを呼び出すために antcall を使用しない理由、呼び出されるターゲットをパラメータ化します。例:

 <antcall target="doStuffToSubdirs">
    <!-- let's clean -->
    <param name="param1" value="clean"/>
  </antcall>

そして:

<target name="doStuffToSubdirs">
   <ant dir="corelib" target="${param1}"/>
   <ant dir="tools" target="${param1}"/>
    ...etc
</target>

これにより、サブディレクトリへの呼び出しをパラメータ化できます。新しいサブディレクトリを追加する場合、そのサブディレクトリを 'doStuffToSubdirs'ターゲットに追加するだけです(同様に名前を変更します!)

他のヒント

commonbuild.xmlおよび子ファイルにクリーンなターゲットを1つ配置し、親build.xmlをインポートします

<import file="${parent.dir}/commonbuild.xml" />

これで、子ビルドでcleanターゲットを呼び出すことができます。子ビルドのいずれかでクリーンなターゲットを作成することで、このターゲットをオーバーライドすることもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top