如何使 maven-compiler-plugin 不隐藏错误源位置

Posted

技术标签:

【中文标题】如何使 maven-compiler-plugin 不隐藏错误源位置【英文标题】:How to make maven-compiler-plugin not hide error source locations 【发布时间】:2016-05-17 08:34:27 【问题描述】:

也许有一个maven-compiler-plugin 选项,但我没有找到它。

javac 直接运行并打印错误时,在消息的第一行之后,它显示受影响的源代码行,下一行的插入符号指向错误位置。它看起来像这样:

com/invariantproperties/udt/sql/RationalUDT.java:324: error: cannot find symbol
    public static boolean lessThan(RRationalUDT p, double q) 
                                   ^
  symbol:   class RRationalUDT
  location: class RationalUDT

注意那些直接指向我拼错类型名称的地方。 maven-compiler-plugin 显示如下:

[ERROR] /var/tmp/pljava-udt-type-extension/java/src/main/java/com/invariantproperties/udt/sql/RationalUDT.java:[324,36] cannot find symbol
  symbol:   class RRationalUDT
  location: class com.invariantproperties.udt.sql.RationalUDT

注意它去掉了实际指向错误的行。 (这里使用的是 Oracle JDK 7。)

好的,所以一开始我以为this older question 会有答案,因为它也是关于maven-compiler-plugin 没有显示整个错误消息,它说修复是更新到maven-compiler-plugin 3.1 版。

但是对于这个问题,我尝试了 2.4、3.1 和 3.5,没有任何改进。显示错误的行总是丢失。

这适用于任何javac 错误。在示例中,我拼错了一个符号,只是为了得到与旧问题所讨论的相同的错误。但我可以修复那个并制作另一个(这个来自javac 注释处理器):

com/invariantproperties/udt/sql/RationalUDT.java:324: error: No known mapping to an SQL type
    public static boolean lessThan(RationalUDT p, double q) 
                                               ^

maven-compiler-plugin 再次显示的只是:

[ERROR] /var/tmp/pljava-udt-type-extension/java/src/main/java/com/invariantproperties/udt/sql/RationalUDT.java:[324,47] error: No known mapping to an SQL type

我的意思是,至少它在括号中显示了行和列,因此并非完全不可能找到错误,但是javac 的正常显示更有帮助。有什么办法让maven-compiler-plugin不隐藏?

【问题讨论】:

【参考方案1】:

这是不可能的,官方Maven Compiler JIRA已经有一个功能请求待处理

MCOMPILER-229:编译错误应该是javac工具报错

在撰写本文时,工单的状态为 OPEN,创建时间为 7 月 25 日/14

你可以提出一个补丁或者 - 至少 - 投票给票(我刚刚做到了)。

【讨论】:

啊,太好了,我找了一个但没找到。

以上是关于如何使 maven-compiler-plugin 不隐藏错误源位置的主要内容,如果未能解决你的问题,请参考以下文章

Maven系列--"maven-compiler-plugin"的使用

如何使用 maven-compiler-plugin 配置 Lombok?

maven-compiler-plugin 插件详解

父pom中的maven-compiler-plugin

`spring-boot-maven-plugin` 和 `maven-compiler-plugin` 有啥区别?

maven-compiler-plugin 插件详解