私はコンパイル時にJavaファイルの束を生成するJavaアノテーションプロセッサを持っています。私は、生成されたクラスを拡張メソッドを追加することでkotlinで使いやすくしたいと考えています。私はkotlinフォーラムで、私の拡張機能を含むkotlinファイルを書くことが試みられると言われました。これを試してみましたが、Filer
オブジェクトを使用してこのファイルを作成し、StandardLocations.SOURCE_OUTPUTディレクトリに出力しました。 Intellijは私の生成クラスを見ることができ、意図したように拡張機能を使うことができますが、コンパイラは新しいkotlinファイルを見つけることができないので、アプリケーションはコンパイルされません。 kotlinコンパイラで取り上げられる新しいkotlinファイルを書く方法はありますか?注釈プロセッサからkotlinファイルを生成する方法は?
19
A
答えて
2
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");
残念ながら、それはkapt2のために動作しない(問題KT-14070を参照)
また、リソースライター
Writer w = processingEnv.getFiler().createResource(SOURCE_OUTPUT, "package_name", "Sample.kt")
経由.ktファイルを作成することができますしかし、今のところ、あなたは二回コンパイラを起動する必要がありますcompileDebugKotlinタスクが実行される前にcompileDebugJavaWithJavacタスクによってjavaxアノテーションプロセッサが呼び出される)
0
ファイルを適切なパッケージあなたのbuild.gradle
からsrc/build/generated-src/kotlin/your/package/File.kt
と、これを追加のようなディレクトリに電子名):
sourceSets {
main.java.srcDirs += 'build/generated-src/kotlin'
}
関連する問題
- 1. Kotlin注釈プロセッサ+ AutoService
- 2. Java注釈プロセッサ - 注釈付きKotlinクラス単位テスト
- 3. JavaからKotlinプロパティの注釈を取得する方法は?
- 4. 注釈プロセッサをコード生成に使用できますか?
- 5. カスタム注釈プロセッサ - Java
- 6. 注釈プロセッサを使用してクラスパスにXMLリソースを生成
- 7. Kotlin注釈IntDef
- 8. 注釈プロセッサ:process()メソッドからのファイル書き込み
- 9. ProGuardから注釈プロセッサの依存関係を排除する方法
- 10. 注釈プロセッサがNullPointerExceptionをスローする
- 11. GradleはQuerydslメタデータを別々の注釈プロセッサで2回生成します
- 12. 注釈付きクラスでメソッドを生成する方法は?
- 13. 注釈プロセッサを使用してsrc/main/resourcesからファイルを読み取る方法は?
- 14. Gradle +注釈+ Flavors =注釈プロセッサを実行しません
- 15. Kotlinによる注釈注入
- 16. 注釈プロセッサへの引数を渡す
- 17. Hibernate 5.2の注釈付きクラスからプログラムでデータベーステーブルを生成する方法
- 18. Kotlin注釈プロセッサがAndroid Studio 3.0 beta7で部屋を使用中にコンパイル時エラーが発生する
- 19. ProguardとKotlin-Reflect/Kotlinの注釈
- 20. 注釈プロセッサによるコードの置換
- 21. Kotlin - 注釈属性値
- 22. Jarファイルから注釈付き値を見つける方法
- 23. Javadocと注釈からRESTドキュメントを生成する
- 24. エンティティフレームワークコアデータ注釈データベース生成値
- 25. 注釈プロセッサ内でのServiceLoaderの使用
- 26. STS、Buildship 2.xと注釈プロセッサ
- 27. デフォルトの注釈プロセッサの検出プロセスとは何ですか?
- 28. 注釈プロセッサ:TypeMirrorまたはTypeElementからすべてのenum値を取得
- 29. EmacsでOcamlの注釈を生成して設定する方法は?
- 30. 親メソッドから注釈を取得する方法は?
あなたのアプリケーションをコンパイルする方法を正確に? – yole
kotlin-android gradleプラグインを使用しています。申し訳ありませんが、それはかなり重要な詳細です。 –
問題を示すサンプルプロジェクトを投稿できますか? – miensol