【发布时间】:2011-10-07 16:49:56
【问题描述】:
是否有关于如何从 Java 运行 Ant 的教程?我从这里得到了一些代码:Setting JAVA_HOME when running Ant from Java
但是一直没能成功。我一直在努力寻找如何实际使用它的示例或教程。
这是我目前所拥有的:
项目 p = 新项目(); p.setUserProperty("ant.file", buildFile.getAbsolutePath()); p.fireBuildStarted(); 压住他(); p.executeTarget("默认");但我猜这个错误:
项目“null”中不存在线程“main”目标“default”中的异常。 在 org.apache.tools.ant.Project.tsort(Project.java:1912) 在 org.apache.tools.ant.Project.topoSort(Project.java:1820) 在 org.apache.tools.ant.Project.topoSort(Project.java:1783) 在 org.apache.tools.ant.Project.executeTarget(Project.java:1368) 在 com.arthrocare.vss2svn.VSS2SVN.newProcess(VSS2SVN.java:128) 在 com.arthrocare.vss2svn.VSS2SVN.main(VSS2SVN.java:52) Java 结果:1我尝试使用以下方式指定项目:
p.setUserProperty("ant.project.name", "VSS 项目");但没有运气。
指定的 ant 文件是正确的,因为它可以从命令行完美运行。
更新
经过一番搜索,我来到了这里:http://onjava.com/pub/a/onjava/2002/07/24/antauto.html?page=1
这是一个很棒的教程。
这是我在看到下面答案中的代码之前得到的代码:
项目项目 = 新项目(); ProjectHelper.configureProject(project, buildFile); DefaultLogger consoleLogger = new DefaultLogger(); consoleLogger.setErrorPrintStream(System.err); consoleLogger.setOutputPrintStream(System.out); consoleLogger.setMessageOutputLevel(Project.MSG_INFO); project.addBuildListener(consoleLogger); 项目.init(); project.executeTarget(project.getDefaultTarget());但由于某种原因,任务仍然失败!我正在使用一个 Visual Source Safe 任务,该任务需要在运行时读取环境值,但使用这种方法看不到它。手动运行 build.xml 文件并使用以下代码:
ProcessBuilder pb = new ProcessBuilder(); 映射 env = pb.environment(); 字符串路径 = env.get("ANT_HOME"); System.out.println(路径); pb.directory(new File(System.getProperty("user.home"))); pb.command(path + System.getProperty("file.separator") + "bin" + System.getProperty("file.separator") + "ant.bat"); 尝试 { 进程 p = pb.start(); } 捕捉(IOException ex){ // }【问题讨论】: