一尘不染

从Java运行ant

java

这是我到目前为止的内容:

        项目p = new Project();
        p.setUserProperty(“ ant.file”,buildFile.getAbsolutePath());
        p.fireBuildStarted();
        压住他();
        p.executeTarget(“ 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

这是一个很棒的教程。

这是我在下面的答案中看到代码之前得到的代码:

        项目项目= new Project();
        ProjectHelper.configureProject(project,buildFile);
        DefaultLogger consoleLogger =新的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 =新的ProcessBuilder();
        地图env = pb.environment();
        字符串路径= env.get(“ ANT_HOME”);
        System.out.println(path);
        pb.directory(new File(System.getProperty(“ user.home”))));
        pb.command(路径+ System.getProperty(“ file.separator”)
                +“ bin” + System.getProperty(“ file.separator”)+“ ant.bat”);
        尝试{
            进程p = pb.start();
        } catch(IOException ex){
            //
        }

阅读 212

收藏
2020-09-08

共1个答案

一尘不染

是否有关于如何从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());
2020-09-08