从Java运行ant
是否有关于如何从Java运行Ant的教程? 我从这里得到了一些代码: 从Java运行Ant时设置JAVA_HOME
但一直无法使其发挥作用。 我一直在努力寻找一个如何实际使用它的示例或教程。
这是我到目前为止所拥有的:
项目p =新项目(); p.setUserProperty(“ant.file”,buildFile.getAbsolutePath()); p.fireBuildStarted(); 压住他(); p.executeTarget( “默认”);
但我想这个错误:
线程“main”中的exception项目“null”中不存在Target“default”。 org.apache.tools.ant.Project.tsort(Project.java:1912)位于org.apache.tools.ant.Project.topoSort的org.apache.tools.ant.Project.topoSort(Project.java:1820) (Project.java:1783)位于com.arthrocare.vss2svn的com.arthrocare.vss2svn.VSS2SVN.newProcess(VSS2SVN.java:128)的org.apache.tools.ant.Project.executeTarget(Project.java:1368)。 VSS2SVN.main(VSS2SVN.java:52)Java结果:1
我尝试用以下方式指定项目:
p.setUserProperty(“ant.project.name”,“VSS Project”);
但没有运气。
指定的ant文件是正确的,因为它在命令行中运行良好。
UPDATE
经过一番搜索,我来到这里: 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); project.init(); project.executeTarget(project.getDefaultTarget());
但由于某种原因,任务仍然失败! 我正在使用Visual Source Safe任务,该任务需要在运行时读取环境值,但是这种方法看不到它。 手动运行build.xml文件并使用以下代码:
ProcessBuilder pb = new ProcessBuilder(); 映射env = pb.environment(); String path = env.get(“ANT_HOME”); 的System.out.println(路径); pb.directory(新文件(System.getProperty(“user.home”))); pb.command(path + System.getProperty(“file.separator”) +“bin”+ System.getProperty(“file.separator”)+“ant.bat”); 尝试{ 过程p = pb.start(); } catch(IOException ex){ // }
是否有关于如何从Java运行Ant的教程?
我对这个问题的部分回答可能会有所帮助:
请参阅此文章和本文 :
File buildFile = new File("build.xml"); Project p = new Project(); p.setUserProperty("ant.file", buildFile.getAbsolutePath()); p.init(); ProjectHelper helper = ProjectHelper.getProjectHelper(); p.addReference("ant.projectHelper", helper); helper.parse(p, buildFile); p.executeTarget(p.getDefaultTarget());