• title: Antで子フォルダのbuild.xmlを全部実行 author: aterai pubdate: 2007-02-16 description: Subantタスクを使って、一度に全部同じターゲットで子フォルダのbuild.xmlを実行します。

概要

Subantタスクを使って、一度に全部同じターゲットで子フォルダのbuild.xmlを実行します。

サンプルbuild.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="swingall" default="clean" basedir=".">
  <target name="clean">
    <subant target="clean">
      <fileset dir="." includes="*/build.xml" />
    </subant>
  </target>
  <target name="dist">
    <subant target="dist">
      <fileset dir="." includes="*/build.xml" />
    </subant>
  </target>
</project>

解説

このサイトのJava Swing Tipsでは、各Tipsごとにフォルダを作成してソースコードやbuild.xmlを管理しています。このため、ソースをxyzzygresregで一気に置換した場合(例えばLogger.global.infoSystem.out.printlnに全部変換など)、一度に全部同じターゲットを実行できるように、サンプルのようなbuild.xmlを作成しています。


targetをコピーするのが面倒な場合、以下のようにbuild.xmlを変更して、subantタスクに渡すターゲット名をプロパティにし-Dオプションで渡す方法もあります。

<?xml version="1.0" encoding="UTF-8"?>
<project name="swingall" default="all" basedir=".">
  <target name="all">
    <subant target="${st}">
      <fileset dir="." includes="*/build.xml" />
    </subant>
  </target>
</project>

子ディレクトリにあるbuild.xmlcompileターゲットをすべて実行することができます。

ant -Dst=compile

コメント