kapt: Как обрабатывать тестовые источники?

У меня есть проект, который использует kapt для обработки аннотаций и генерации кода (на основе аннотаций). Он работает в основных источниках, но не в тестовых источниках.

Некоторые источники (например, как использовать kapt в области androidTest ) предлагают запустить gradle kaptTest , но это тоже не работает. Он сообщает о задании как «До настоящего времени», даже сразу после чистки. Возможно, это предложение уникально для Android.

Я загрузил пример проекта из https://github.com/JetBrains/kotlin-examples/tree/master/gradle/kotlin-code-generation , добавил использование аннотаций в тестовых источниках, и я получил там такое же поведение. Он хорошо работает для основных источников, и он не работает для тестовых источников.

Единственная странная вещь на выходе:

 > Task :example:compileKotlin Using kotlin incremental compilation w: [kapt] Sources output directory is not specified, skipping annotation processing 

но, как вы можете видеть, это не тестовые источники, но основные источники и обработчик аннотации применяются к ним.

Я добавил распечатку в обработчик аннотации. Он появляется для компиляцииKotlin, но не для compileTestKotlin.

Итак, каков волшебный трюк, чтобы сделать работу над тестовыми источниками?

PS: Я думаю, кто-то попросит мой build.gradle. Он идентичен таковому из приведенного мной примера, поэтому, если вы можете заставить его работать для примера, я могу интегрироваться в свой файл сборки.

PPS: Только аналогичный вопрос, который я нашел, – это плагин Kaptlin's kapt для градиента, который не работает для настраиваемого исходного набора (JMH) , и они предлагают выпустить отчет об ошибке. Может быть, это ошибка в kapt-gradle-plugin?

    Некоторые источники (например, как использовать kapt в области androidTest) предлагают запустить gradle kaptTest, но это тоже не работает.

    Вы неправильно поняли это предложение. Он говорит, что kaptTest следует использовать вместо kapt в блоке dependencies , как описано здесь , а не о том, что вы должны запускать Gradle по-разному. OTOH, в документации также конкретно говорится

    Обратите внимание, что kaptAndroidTest и kaptTest расширяет kapt, поэтому вы можете просто предоставить зависимость kapt, и она будет доступна как для источников производства, так и для тестов.

    Так что там действительно есть ошибка.

    Я связал этот вопрос в https://youtrack.jetbrains.com/issue/KT-21891 . Я не хотел записывать отдельную ошибку, потому что я не знаю, какой плагин Gradle / Kotlin / Kotlin Gradle / и т. Д. ты имел.