使用maven增量java编译(就像Eclipse一样)
我想使用maven来构建存在未解决的编译问题的项目。
主要目的是为包含编译错误的类使用某种存根来打包和部署或运行应用程序 ,就像我理解Eclipse那样(感谢JDT Core )。
我在使用非Javac编译器的 Apache Maven文档之后配置maven java编译器插件以使用Eclipse编译器。 认为可能应该设置一些参数来修改编译器/构建器行为,我正在阅读帮助Eclipse – 编译Java代码,但我没有意识到哪个编译器/构建器选项或这些的组合起作用。
到目前为止,maven java编译器插件的下一个配置使用eclipse编译器编译并打包应用程序,包括生成的.class(jvm字节码)仅适用于没有编译错误的java类。 要获得此行为,只需要使用eclipse编译器(请参阅compilerId和依赖项)并设置failOnError=false
。
maven-compiler-plugin 3.1 eclipse 1.7 1.7 true true true false disabled ignore org.codehaus.plexus plexus-compiler-eclipse 2.3
使用这种配置,我可以运行java应用程序,只要执行不使用未包含的编译错误的类(因为没有生成存根),但在Java EE容器上,类加载将失败,因此永远不会部署应用程序。
我对此表示感谢。
只是为了分享解决方案,那时我只需用tycho-compiler-jdt
替换plexus-compiler-eclipse
来获得欲望的行为。
proceedOnError
参数指示它必须继续编译,尽管有错误,转储带有问题方法或问题类型的类文件如何处理编译错误。
接下来是最终配置示例。
org.apache.maven.plugins maven-compiler-plugin 3.1 jdt 1.7 1.7 true false org.eclipse.tycho tycho-compiler-jdt 0.22.0
Tycho FAQ中有更多的插件配置示例。 可能的编译器参数在使用 Java开发用户指南 的批处理编译器 (Eclipse帮助站点)一节中描述。