查看Ant的主类org.apache.tools.ant.Main的来源。您可以尝试直接调用其main或start方法,或将其部分逻辑复制到您的应用程序中。 完成这些方法后,应用程序应继续执行。 del>
编辑:
The answer by Paul Cager是正确的,我在某种程度上错过了Ant的Main调用System.exit()的事实。
关于main / start / startAnt方法的另一个问题是它们希望将参数作为字符串数组。这可能很方便,但它不是特别类型安全或面向对象。要为给定的构建文件和目标调用Ant,可以使用以下内容:
public static void runAnt(String buildfile, String target) throws Exception {
File buildFile = new File(buildfile);
Exception error = null;
org.apache.tools.ant.Project project = new org.apache.tools.ant.Project();
try {
project.addBuildListener(new org.apache.tools.ant.listener.Log4jListener());
project.fireBuildStarted();
project.init();
project.setUserProperty(org.apache.tools.ant.MagicNames.ANT_FILE, buildFile.getAbsolutePath());
org.apache.tools.ant.ProjectHelper.configureProject(project, buildFile);
project.executeTarget(target);
} catch (Exception e) {
error = e;
throw e;
} finally {
project.fireBuildFinished(error);
}
}