- - PR -
javaからantを呼び出す
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-27 23:15
javaアプリケーションからorg.apache.tools.ant.Main#startAnt
を呼び出して、build.xmlをビルドするプログラムを書いていますが、 startAntの内部でSystem.exit(0);しているため、 javaアプリケーションも一緒に終了してしまいます。 ビルドした後も、アプリケーションの処理を続けたいのですが、 何か方法がないでしょうか? [環境] java 2 sdk 1.4.2_05 ant 1.6.2 |
|
投稿日時: 2004-11-28 11:39
startAntをどうやって使ってるんですか? Mainのサブクラスを作ってるとか?
普通にmainメソッドを使うのではだめなんですか? |
|
投稿日時: 2004-11-28 13:46
セキュリティポリシーでAntのパッケージに System.exit() の呼び出しを禁止させる、とか Runtime.exec で別プロセスとして fork する、のどちらかでしょうか。
|
|
投稿日時: 2004-11-28 16:19
こんな感じで実装しています。
Main ant = new Main(); ant.startAnt( new String[] {"-f", file}, properties, getClass().getClassLoader()); |
|
投稿日時: 2004-11-28 16:23
「セキュリティポリシーでAntのパッケージに System.exit() の呼び出しを禁止させる」
これって、具体的にどのクラスを用いて行うのでしょうか? でも、あまりスマートなやり方で無い気がします。 antのクラスで、同じことをする別の方法って無いのでしょうか? |
|
投稿日時: 2004-11-29 17:13
つい最近、同じ事で悩みましたがこんな感じで出来ました。
ant.jarとant-launcher.jarをクラスパスに通して コマンドライン引数でビルドファイルを指定してください。 import org.apache.tools.ant.BuildLogger; import org.apache.tools.ant.DefaultLogger; import org.apache.tools.ant.Project; import org.apache.tools.ant.ProjectHelper; public class AntTest { public static void main(String[] args) { System.out.println("START"); Project project = new Project(); project.init(); // ビルドファイルを指定 ProjectHelper.getProjectHelper().parse(project, new java.io.File(args[0])); BuildLogger logger = new DefaultLogger(); logger.setMessageOutputLevel(Project.MSG_INFO); logger.setOutputPrintStream(new java.io.PrintStream(System.out)); logger.setErrorPrintStream(new java.io.PrintStream(System.err)); logger.setEmacsMode(false); project.addBuildListener(logger); java.util.Vector list = new java.util.Vector(); /* * ターゲットを指定 * list.add("compile"); * のようにすれば任意のターゲットを指定できます。 */ list.add(project.getDefaultTarget()); project.executeTargets(new java.util.Vector(list)); System.out.println("DONE"); } } antによってSystem.exit()されなければ、最後に"DONE"が出力されるはずです。 参考になりましたでしょうか。 |
|
投稿日時: 2004-11-29 20:56
> antによってSystem.exit()されなければ、最後に"DONE"が出力されるはずです。
> 参考になりましたでしょうか。 大変参考になりました。 まさに、これがやりたかったのです。 ありがとうございました。 |
1