我在我的项目中使用了龙目岛,但我的同事不同意使用它,他的理由是(来自controversy of lombok documents)
这两个项目Lombok都利用非公共API来完成他们的巫术。这意味着使用后续IDE或JDK版本可能会破坏Project Lombok的风险。
但这是一篇2010年写的非常古老的文档,也许现在已经解决了这个问题,所以我想知道Lombok是否支持Java 9并且它仍然使用非公共API:s?
龙目岛项目有an issue tracking Java 9 support。截至2018年1月9日和版本1.16.20,Lombok正式支持Java 9.来自the changelog:
- 平台:在新的IntelliJ,Netbeans和Gradle中更好地支持jdk9。
- BREAKING CHANGE:lombok配置密钥
lombok.addJavaxGeneratedAnnotation
现在默认为false
而不是true。随着JDK9的发布,Oracle打破了这一注释,需要进行这一重大变革。- BREAKING CHANGE:lombok配置密钥
lombok.anyConstructor.suppressConstructorProperties
现已弃用,默认为true
,即默认情况下,lombok不再自动生成@ConstructorProperties
注释。现在存在新的配置密钥lombok.anyConstructor.addConstructorProperties
;如果你想要旧的行为,将它设置为true
。随着JDK9的发布,Oracle或多或少打破了这个注释,需要进行这种突破性的改变。- 开发:现在可以在JDK1.9上编译lombok。
(目前,它不是模块,所以你需要将它放在类路径上。感谢Tos' answer,它首先提到了这一点。)
此处跟踪了Java 9的lombok的当前状态:https://github.com/rzwitserloot/lombok/issues/985
截至目前,这个bug仍然是开放的,并且(显然)正在积极地开展工作。有一个边缘释放解决了大多数问题,所以在这一点上看起来你需要做的就是等待..
这个问题似乎从2018年1月9日开始解决:https://github.com/rzwitserloot/lombok/issues/985#issuecomment-356135454
Per Lombok版本1.16.20支持Java 9。