AntをJavaプログラムから呼び出す方法を調べました。Antつかったプログラムを書きたいときに重宝します。
環境設定 †
- Apache Ant version 1.7.0 compiled on September 23 2007
で確認しました。またあらかじめ、
ant.jar
ant-launcher.jar
にクラスパスを通しておきます。
やってみる †
- ソース
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import org.apache.tools.ant.BuildLogger;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
// 作成日: 2008/01/04
public class Main {
public static void main(String[] args) {
try {
Project project = new Project();
project.init();
// ビルドファイルを指定
File buildFile = getBuildFile();
ProjectHelper.getProjectHelper().parse(project, buildFile);
// loggerの設定。
BuildLogger buildLogger = getBuildLogger();
project.addBuildListener(buildLogger);
// Vector list = new Vector();
// list.add(project.getDefaultTarget());
// project.executeTargets(new Vector(list));
project.executeTarget(project.getDefaultTarget());
} catch (IOException e) {
e.printStackTrace();
}
}
private static BuildLogger getBuildLogger() {
BuildLogger buildLogger = new DefaultLogger();
buildLogger.setMessageOutputLevel(Project.MSG_INFO);
buildLogger.setOutputPrintStream(new PrintStream(System.out));
buildLogger.setErrorPrintStream(new PrintStream(System.err));
buildLogger.setEmacsMode(false);
return buildLogger;
}
private static File getBuildFile() throws IOException {
return new File("build.xml");
}
}
実行結果
target1:
[echo] target1です
[echo] ${target1.msg}
TIPS †
変数の制御 †
変数については外部からプロパティで渡すことが可能
Project project = new Project();
〜 省略 〜
project.setNewProperty("target1.msg", "メッセージ1");
project.executeTarget(project.getDefaultTarget());
実行結果
target1:
[echo] target1です
[echo] メッセージ1
複数のターゲットを実行 †
Project project = new Project();
〜 省略 〜
project.setNewProperty("target1.msg", "メッセージ1");
project.setNewProperty("target2.msg", "メッセージ2");
Vector list = new Vector();
list.add("target1");
list.add("target2");
project.executeTargets(list);
// project.executeTarget(project.getDefaultTarget());
実行結果
target1:
[echo] target1です
[echo] メッセージ1
target2:
[echo] target2
[echo] メッセージ2
関連リンク †
この記事は
現在のアクセス:14965