// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents AntをJavaプログラムから呼び出す方法を調べました。Antつかったプログラムを書きたいときに重宝します。 **環境設定 [#nd4fef87] -Apache Ant version 1.7.0 compiled on September 23 2007 で確認しました。またあらかじめ、 ant.jar ant-launcher.jar にクラスパスを通しておきます。 #ref(pic.png) **やってみる [#qa368ebc] -サンプルのbuild.xml <?xml version="1.0" encoding="UTF-8"?> <project name="project" default="target1"> <property file="build.win.properties" /> <target name="target1"> <echo message="target1です" /> <echo message="${target1.msg}" /> </target> <target name="target2"> <echo message="target2" /> <echo message="${target2.msg}" /> </target> </project> -ソース 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 [#l3533606] ***変数の制御 [#b6c3642d] 変数については外部からプロパティで渡すことが可能 Project project = new Project(); 〜 省略 〜 project.setNewProperty("target1.msg", "メッセージ1"); project.executeTarget(project.getDefaultTarget()); 実行結果 target1: [echo] target1です [echo] メッセージ1 ***複数のターゲットを実行 [#e4e72e82] 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 ***関連リンク [#u4657dba] -http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16992&forum=12 ---- この記事は #vote(おもしろかった[9],そうでもない[0]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}