如何为特定任务创建ant侦听器

我们的应用程序中有大约80个jar子。 所有都是使用ant中的javac任务和jar任务创建的。

我想介绍一下findbug检查。 一种选择是创建单个findbug check ant项目。 这包含所有jar,其中定义了所有源路径。 这工作 – 需要很多空间。 结果分析也不太直接。 有数以千计的警告开始。

我正在考虑的一个选项是在javac task ant上运行带有特殊监听器的ant,提取源和类位置,使用源和类文件信息调用findbug任务。 任何其他方式将findbug引入大型项目。

调整taskFinished()…很好用于我的用法。

public class JavacListener implements BuildListener public void taskFinished(BuildEvent be) { if ( be.getTask() instanceof UnknownElement ) { UnknownElement ue= (UnknownElement) be.getTask(); ue.maybeConfigure(); if ( ue.getTask() instanceof Javac ) { Javac task = (Javac)ue.getTask(); final Path sourcepath = task.getSrcdir(); FindBugsTask fbtask = new FindBugsTask(); System.out.println ("Trying FindBugs"); fbtask.setSourcePath(sourcepath); fbtask.setAuxClasspath(task.getClasspath()); Path destPath = new Path( task.getProject() ); destPath.setPath(task.getDestdir().getAbsolutePath()); fbtask.setAuxAnalyzepath(destPath); fbtask.setOutputFile(getFileName(task.getProject())); fbtask.setProject(task.getProject()); fbtask.setHome(new File("C:\\apps\\findbugs-1.3.0")); fbtask.execute(); } } else { System.out.println(be.getTask().getClass().getName()); System.out.println(be.getTask().getTaskName()); } } ..