使用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帮助站点)一节中描述。