从 Java 运行蚂蚁
有没有关于如何从Java运行Ant的教程?我从这里得到了一些代码:从Java运行Ant时设置JAVA_HOME
但一直无法让它工作。我一直在尝试找到有关如何实际使用它的示例或教程。
以下是我到目前为止所拥有的:
Project p = new Project(); p.setUserProperty("ant.file", buildFile.getAbsolutePath()); p.fireBuildStarted(); p.init(); p.executeTarget("default");
但我猜这个错误:
Exception in thread "main" Target "default" does not exist in the project "null". at org.apache.tools.ant.Project.tsort(Project.java:1912) at org.apache.tools.ant.Project.topoSort(Project.java:1820) at org.apache.tools.ant.Project.topoSort(Project.java:1783) at org.apache.tools.ant.Project.executeTarget(Project.java:1368) at com.arthrocare.vss2svn.VSS2SVN.newProcess(VSS2SVN.java:128) at com.arthrocare.vss2svn.VSS2SVN.main(VSS2SVN.java:52) Java Result: 1
我尝试用以下方式指定项目:
p.setUserProperty("ant.project.name", "VSS Project");
但是没有运气。
指定的 ant 文件是正确的,因为它可以从命令行完美地工作。
更新
经过更多的搜索,我到达了这里:http://onjava.com/pub/a/onjava/2002/07/24/antauto.html?page=1
这是一个很棒的教程。
以下是我比在下面的答案中看到代码更早获得的代码:
Project project = new Project(); ProjectHelper.configureProject(project, buildFile); DefaultLogger consoleLogger = new DefaultLogger(); consoleLogger.setErrorPrintStream(System.err); consoleLogger.setOutputPrintStream(System.out); consoleLogger.setMessageOutputLevel(Project.MSG_INFO); project.addBuildListener(consoleLogger); project.init(); project.executeTarget(project.getDefaultTarget());
但是由于某种原因,任务仍然失败了!我正在使用一个视觉源安全任务,该任务需要在运行时读取环境值,但它在此方法中看不到它。手动运行生成.xml文件并使用以下代码工作:
ProcessBuilder pb = new ProcessBuilder(); Map env = pb.environment(); String path = env.get("ANT_HOME"); System.out.println(path); pb.directory(new File(System.getProperty("user.home"))); pb.command(path + System.getProperty("file.separator") + "bin" + System.getProperty("file.separator") + "ant.bat"); try { Process p = pb.start(); } catch (IOException ex) { // }