Tor*_*que 24 java annotation-processing lombok dagger
我正在尝试在我的Java项目上运行Dagger 2和Lombok.当然,龙目岛必须首先运行,但实际上它是否真的有机会.起初我怀疑我可以通过类路径中库jar的相应位置来指定顺序,但是该顺序显然会被忽略.
有没有办法指定它们以某种方式运行的顺序,或者我只是不得不忍受不能组合两个AP?
我制作了一个SSCCE测试用例.
一个简单的git clone&mvn compile足以证明这个问题 - 如果您在App.java中注释第18行并取消注释第20-21行,它将进行编译,即使第18行中的Lombok表示法创建了相同的构造函数.问题是龙目岛似乎追随Dagger.
kap*_*pex 11
理想情况下,订单无关紧要.注释处理器应该只创建文件 - 无论何时创建文件,另一个处理轮开始,其他处理器有机会再次使用新文件.在这种情况下,订单并不重要,所以我认为没有官方的方式来强制处理器的订单.问题是Lombok处理器操纵现有文件而不是创建新文件,这是不应该做的.某些编译器可能有订购处理器的选项或使用处理器加载或出现在命令行参数中的顺序,但这取决于编译器的实现.
您可以尝试查看Daggers和Lombok的构建过程,并查看在那里调用的处理器.然后以正确的顺序在maven构建中显式设置这些处理器,并测试不同的编译器,看看它们是否按此顺序运行.
如果有必要,您可以拆分编译过程并-proc:only首先运行Lombok,然后在没有Lombok的情况下运行另一个编译步骤,并且不覆盖被操作的文件(如果可能的话,我从未尝试过).
| 归档时间: |
|
| 查看次数: |
6011 次 |
| 最近记录: |