ant:在编译错误的情况下尽可能编译为大多数类

时间:2012-05-14 13:09:35

标签: java ant compilation build-automation

如果出现编译错误,ant javac任务将无法编译所有可编译的类。似乎javac任务(或编译器本身)只在遇到第一个错误时就停止。

failonerror属性对此行为没有任何影响。 我没有设置compile属性(因此,使用了Oracle JDK的编译器)。

编译错误时是否可以编译尽可能多的类?
(最好不要依赖任何特定的编译器)

一个用例就是在开发过程中:
想象一下,你正在实现一些新的功能,但你还没有完成,编译错误仍然存​​在 同时,您需要修复其他一些错误并确保没有任何损坏,您希望执行标准测试套件,这些测试套件由IDE项目工作区中的ant任务调用。 ant任务尝试编译所有类/测试类,但由于您刚刚开发的类中的编译错误而失败。

告诉ant / javac在编译错误上没有失败以便能够尽可能地执行大多数测试用例会非常有帮助。

1 个答案:

答案 0 :(得分:3)

这与ant无关,它是javac,它会在出错时停止并且永远不会给你任何类文件。 failonerror属性只是说如果编译发送错误,构建是否应该继续或停止。

自1.3:http://docs.oracle.com/javase/1.3/docs/tooldocs/tools-changes.html

“当新的1.3编译器在编译期间检测到源文件中的错误时,它会继续解析剩余的源文件,并尝试识别它们可能包含的任何其他错误。代码生成完全被抑制为剩余的但是,编译并且不会生成任何类文件,即使对于不包含错误的编译单元也是如此。

您可能想要使用其他一些编译器,如jikes。但实际上,谁会希望运行部分编译的类?