- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#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(おもしろかった[8],そうでもない[0])
#vote(おもしろかった[13],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}