我在项目中使用了Lombok,但我的同事不同意使用它,他的理由是(来自controversy of lombok documents)
这两个项目Lombok都使用非公共API来完成他们的巫术。这意味着使用后续IDE或JDK版本可能会破坏Project Lombok的风险。
但它是2010年编写的一个非常古老的文档,也许现在已经解决了这个问题,所以我想知道Lombok是否支持Java 9并且它是否仍然使用非公共API:s?
答案 0 :(得分:45)
Lombok项目有an issue tracking Java 9 support。截至2018年1月9日和版本1.16.20,Lombok正式支持Java 9.来自the changelog:
- PLATFORM:在新的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,它首先提到了这一点。)
答案 1 :(得分:4)
此处跟踪了lombok for Java 9的当前状态:https://github.com/rzwitserloot/lombok/issues/985
截至目前,这个bug仍然是开放的,并且(显然)正在积极地开展工作。有一个边缘释放解决了大部分问题,所以在这一点看起来你需要做的就是等待..
答案 2 :(得分:3)
自2018年1月9日以来,该问题似乎已得到解决:https://github.com/rzwitserloot/lombok/issues/985#issuecomment-356135454
Per Lombok版本1.16.20支持Java 9。
答案 3 :(得分:0)