如何使 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?