AntをJavaプログラムから呼び出す方法を調べました。Antつかったプログラムを書きたいときに重宝します。
で確認しました。またあらかじめ、
ant.jar ant-launcher.jar
にクラスパスを通しておきます。
<?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}
変数については外部からプロパティで渡すことが可能
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
この記事は
現在のアクセス:14969