Есть ли учебное пособие по запуску Ant из Java? Я получил код отсюда: Установка JAVA_HOME при запуске Ant из Java
Но не удалось заставить его работать. Я пытался найти пример или учебник о том, как его использовать.
Вот что я до сих пор:
Project p = new Project(); p.setUserProperty("ant.file", buildFile.getAbsolutePath()); p.fireBuildStarted(); p.init(); p.executeTarget("default");
Но я предполагаю, что эта ошибка:
Exception in thread "main" Target "default" does not exist in the project "null". at org.apache.tools.ant.Project.tsort(Project.java:1912) at org.apache.tools.ant.Project.topoSort(Project.java:1820) at org.apache.tools.ant.Project.topoSort(Project.java:1783) at org.apache.tools.ant.Project.executeTarget(Project.java:1368) at com.arthrocare.vss2svn.VSS2SVN.newProcess(VSS2SVN.java:128) at com.arthrocare.vss2svn.VSS2SVN.main(VSS2SVN.java:52) Java Result: 1
Я попробовал указать проект с помощью:
p.setUserProperty("ant.project.name", "VSS Project");
Но не повезло.
Указанный файл Ant правильный, поскольку он отлично работает из командной строки.
UPDATE
После еще нескольких поисков я получил здесь: http://onjava.com/pub/a/onjava/2002/07/24/antauto.html?page=1
Это отличный учебник.
Вот код, который я получил немного раньше, чем просмотр кода в ответе ниже:
Project project = new Project(); 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(); Map env = pb.environment(); String path = env.get("ANT_HOME"); System.out.println(path); pb.directory(new File(System.getProperty("user.home"))); pb.command(path + System.getProperty("file.separator") + "bin" + System.getProperty("file.separator") + "ant.bat"); try { Process p = pb.start(); } catch (IOException ex) { // }