如果出现编译错误,ant javac
任务将不会编译所有可以编译的类。似乎javac
任务(或编译器本身(在遇到第一个错误后立即停止。
failonerror
属性对此行为没有任何影响。我没有设置 compile
属性(因此,使用了 Oracle JDK 的编译器(。
在出现编译错误的情况下,是否可以编译尽可能多的类?
(最好不依赖于任何特定的编译器(
一个用例是在开发过程中:
假设您正在实现一些新功能,但尚未完成,编译错误仍然存在。
同时,您需要修复其他一些错误,并确保没有任何损坏,您希望执行标准测试套件,这些测试套件由 IDE 的项目工作区中的 ant 任务调用。ant 任务尝试编译所有类/测试类,但由于您刚刚开发的类中的编译错误而失败。
告诉ant/javac不要在编译错误上失败,以便能够执行尽可能多的测试用例,这将是非常有帮助的。
ant
无关,javac
会在错误时停止并且永远不会给你任何类文件。failonerror
属性只是说明如果编译发回错误,构建是应该继续还是停止。
自 1.3 : http://docs.oracle.com/javase/1.3/docs/tooldocs/tools-changes.html
"当新的1.3编译器在编译过程中检测到源文件中的错误时,它将继续解析剩余的源文件,并尝试识别它们可能包含的任何进一步错误。但是,在编译的其余部分完全禁止代码生成,并且不会生成任何类文件,即使对于不包含错误的编译单元也是如此。
您可能希望使用其他一些编译器,例如 jikes。但实际上,谁会希望运行部分编译的类?