如何从Web应用程序运行ant任务

时间:2019-01-17 13:37:27

标签: java rest ant

我需要在rest控制器的Web应用程序中运行ant target。 我正在使用以下代码:

class Networking {

    func performFileDownload(path: String, completionHandler: @escaping (ResultModel<DataResponse<Data>, Error>) -> Void) {
        let fileUrl = SDKCore.tenantURL + path

        alamofire.request(fileUrl)
            .responseData { (response) in
                switch response.result {
                case .success(_):
                    completionHandler(.success(response))
                case .failure(let error):
                    completionHandler(.failed(error))
                }
        }
    }

当我从main方法执行此方法时,ant任务已正确执行。 但是,如果我从控制器调用此代码,它将在

处停止执行
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);

}

它不会引发任何异常等,只是在eclipse中,我得到了窗口以附加cxf jar或一些无关的jar的源代码。 我已经在类路径中包含ant.jar,ant-launcher.jar和xercesImpl.jar。

有什么我想念的吗?

谢谢

0 个答案:

没有答案