从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());