我想以编程方式运行ANT 文件。我使用了下一个代码:
File file = new File("path to file");
Project project = new Project();
project.init();
DefaultLogger logger = new DefaultLogger();
logger.setErrorPrintStream(System.err);
logger.setOutputPrintStream(System.err);
logger.setMessageOutputLevel(Project.MSG_INFO);
project.setProperty("ant.file", file.getAbsolutePath());
project.addBuildListener(logger);
project.fireBuildStarted();
ProjectHelper helper = ProjectHelper.getProjectHelper();
project.addReference("ant.projectHelper", helper);
helper.parse(project, file);
project.executeTarget(project.getDefaultTarget());
但是,当我运行代码时,我获得了以下错误:
Problem: failed to create task or type epsilon.emf.register
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
我几乎可以肯定会出现此问题,因为正在使用单独的JRE 。我需要设置相同的工作空间JRE (就像我们在手动运行ANT文件时在环境工具中所做的那样)。 如何以编程方式更改此选项?
答案 0 :(得分:0)
类路径问题,这是在缺少实现第三方ANT任务的jar时抛出的典型错误。
检查您的构建文件,看看是否使用了名为“epsilon.emf.register”的任务。
答案 1 :(得分:0)
有关此问题的简要解决方案,请参阅此论坛中提供的答案: