Мне нужно запустить ant target из моего веб-приложения в контроллере rest.
Я использую следующий код:
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
// Prepare Ant project
String buildFilePath = "build.xml";
Project project = new Project();
File buildFile = new File(buildFilePath);
project.setUserProperty("ant.file", buildFile.getAbsolutePath());
project.addBuildListener(consoleLogger);
try {
project.fireBuildStarted();
project.init();
ProjectHelper projectHelper = ProjectHelper.getProjectHelper();
project.addReference("ant.projectHelper", projectHelper);
projectHelper.parse(project, buildFile);
String targetToExecute = "<my target>";
project.executeTarget(targetToExecute);
project.fireBuildFinished(null);
} catch (BuildException buildException) {
project.fireBuildFinished(buildException);
throw new RuntimeException("Error", buildException);
}
Когда я выполняю этот метод из основного метода, это задача муравья выполняется правильно.
Но, если я вызываю этот код с моего контроллера, он останавливается на
projectHelper.parse(project, buildFile);
Это не вызывает каких-либо исключений или чего-то подобного, просто в затмении я получаю окно для прикрепления источника для cxf jar или некоторого не связанного jar.
Я включил ant.jar, ant-launcher.jar и xercesImpl.jar в classpath.
Есть что-то, чего мне не хватает.
Спасибо