我有一个要求,我必须从不同的Java项目(在Eclipse中配置)到
Metrics Plugin中提取指标.我正在尝试使用ANT构建脚本自动执行此过程.
我做了一个Java实用程序项目,它将:
>创建这些构建文件
>将它们放在Eclipse中配置的各个Java项目中
>尝试执行它们.
虽然build.xml正确运行,但当我尝试以编程方式运行它时,我收到以下错误:
Exception in thread "main" ProjectHelper.parse() must be implemented in a helper plugin org.apache.tools.ant.ProjectHelper
at org.apache.tools.ant.ProjectHelper.parse(ProjectHelper.java:277)
at com.metrics.generator.MetricsGenerator.runAntScripts(MetricsGenerator.java:69)
at com.metrics.generator.MetricsGenerator.doAutomate(MetricsGenerator.java:43)
at com.metrics.generator.MetricsGenerator.main(MetricsGenerator.java:30)
我假设parse()方法不能正常工作,但我不明白为什么.手动运行build.xml(这意味着正确创建了XML文件).我必须为Eclipse运行此构建的唯一修改是转到Run>外部工具>外部工具配置> JRE并选择“在与工作区相同的JRE中运行”
构建文件如下:
注意:[projectName]和[ouputFile]目前在创建时提供,我只是在这篇文章中省略了它们.仅供参考,我正在使用Eclipse Indigo.
失败的代码如下所示:
private void runAntScripts(File[] projectFolders){
BuildLogger logger = new DefaultLogger();
logger.setOutputPrintStream(System.out);
logger.setErrorPrintStream(System.out);
logger.setMessageOutputLevel(Project.MSG_INFO);
Project metricsProject = new Project();
metricsProject.addBuildListener(logger);
ProjectHelper helper = new ProjectHelper();
metricsProject.addReference("ant.projectHelper", helper);
File buildFile;
int totalFolders = projectFolders.length;
for(int index = 0; index < totalFolders; index++){
buildFile = new File(projectFolders[index], buildXMLFileName);
if(buildFile.isFile()){
helper.parse(metricsProject, buildFile);
metricsProject.setProperty("ant.file", buildFile.getAbsolutePath());
metricsProject.init();
metricsProject.setBaseDir(projectFolders[index]);
metricsProject.executeTarget("build");
}
}
}