Запустите муравей с Java

Есть ли руководство по запуску Ant из Java? Я получил некоторый код отсюда: Установка JAVA_HOME при запуске Ant из Java

Но не смогли заставить его работать. Я пытался найти пример или учебник о том, как на самом деле его использовать.

Вот что у меня так далеко:

        Проект р = новый проект ();
        p.setUserProperty("ant.file", buildFile.getAbsolutePath());
        p.fireBuildStarted();
        Приколи это();
        p.executeTarget("по умолчанию");

Но я думаю, что эта ошибка:

Исключение в потоке "main" Целевое значение "default" не существует в проекте "null". 
    в 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 Project");

Но не повезло.

Указанный файл 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);
        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(путь + System.getProperty("file.separator")
                + "bin" + System.getProperty("file.separator") + "ant.bat");
        пытаться {
            Процесс p = pb.start();
        } catch (IOException ex) {
            //
        }

1 ответ

Решение

Есть ли руководство по запуску Ant из Java?

Часть моего ответа на этот вопрос может помочь:

Смотрите эту статью и эту статью:

   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());
Другие вопросы по тегам