如何解决在我的注释处理器中看不到Lombok吸气剂/设置器
我做了javax.annotation.processing.AbstractProcessor
的自定义实现,并且可以正常工作。
但是我的处理器找不到Lombok生成的getter,setter和构造函数。
这里是我的前任(我需要创建最少的例子吗?): https://github.com/hohserg1/ElegantNetworking/blob/1.12.2-annotation-processor/src/main/java/hohserg/elegant/networking/annotation/processor/ElegantPacketProcessor.java#L62
示例类:
ElegantPacket //my
@Value //lombok
public class Test implements ClientToServerPacket {
int some; //it visible
//int getSome() //generated by Lombok,it invisible
//public Test(int some) //generated by Lombok,it invisible
}
解决方法
如果您希望同时运行Lombok和另一个注释处理器,那么您应该释放代码并在结果上运行注释处理器。
这是Checker Framework Gradle Plugin的工作,如Checker Framework Manual所述。
说明:
大多数注释处理器要么生成输出(例如发出警告),要么生成新的类。 Lombok是用于修改现有代码的注释处理器。通过访问javac
编译器的内部API来做到这一点(它也支持eclipsec
)。这些操作使javac
发出包含Lombok对您的类所做的更改的字节码。但是,这些更改对于编译器的早期阶段是不可见的,尤其是注释处理器。换句话说,Lombok在其他注释处理器中的表现不佳。
好的,我通过使用 gradle 依赖配置的 annotationProcessor
解决了这个问题:
dependencies {
//gradle 4.6+
annotationProcessor 'org.projectlombok:lombok:1.18.8',"io.gitlab.hohserg.elegant.networking:annotation-processor:2.8"
...
}
也并非所有 lombok 更改都可以从我的注释处理器中看到。字段访问修饰符的更改不可见,但可以从 lombok 注释中确定。例如,@Value 将包私有字段设为私有。
也可以在低于 4.6 的 gradle 上使用插件 apt
buildscript {
repositories {
...
maven { url 'https://plugins.gradle.org/m2/' }
}
dependencies {
...
classpath 'net.ltgt.gradle:gradle-apt-plugin:0.9'
}
}
dependencies {
apt 'org.projectlombok:lombok:1.18.8',"io.gitlab.hohserg.elegant.networking:annotation-processor:2.7"
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。