Bra*_*ell 19 annotation-processing kotlin
我有一个java注释处理器,它在编译期间生成一堆java文件.我想通过添加扩展方法使生成的类更好地在kotlin中使用.我在kotlin论坛上被告知,我可以尝试的是写一个包含我的扩展功能的kotlin文件.我试过这个,我使用该Filer对象创建此文件,将其输出到StandardLocations.SOURCE_OUTPUT目录.Intellij可以看到我生成的类,我可以按预期使用扩展函数,但是app不会编译,因为编译器找不到新的kotlin文件.有什么方法可以编写一个新的kotlin文件,它将被kotlin编译器选中吗?
对于 kapt,您可以通过获取源文件夹。
Map<String, String> options = processingEnv.getOptions();
String generatedPath = options.get("kapt.kotlin.generated");
String path = generatedPath
.replaceAll("(.*)tmp(/kapt/debug/)kotlinGenerated",
"$1generated/source$2");
Run Code Online (Sandbox Code Playgroud)
不幸的是它不适用于 kapt2 (请参阅问题KT-14070)
您还可以通过资源编写器创建 .kt 文件
Writer w = processingEnv.getFiler().createResource(SOURCE_OUTPUT, "package_name", "Sample.kt")
Run Code Online (Sandbox Code Playgroud)
但现在您需要调用编译器两次,因为compileDebugKotlin任务在通过compileDebugJavaWithJavac任务调用javax注释处理器之前运行)
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |