Проверка, использует ли kapt инкрементную обработку аннотаций - PullRequest
1 голос
/ 14 мая 2019

В Kotlin 1.3.30 добавлена ​​поддержка обработки добавочной аннотации: https://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/ Согласно документу:

Note that in the current implementation, using any non-incremental annotation processor or a change in dependency’s ABI (so far, including modifying internal declarations) will lead to non-incremental annotation processing for a given module.

У меня есть многомодульный проект с несколькими процессорами аннотаций. Только некоторые из них являются инкрементными. Насколько мне известно, существуют модули, которые используют только процессоры инкрементальных аннотаций.

Мой вопрос: Есть ли способ проверить, происходила ли обработка добавочной аннотации? Например. Существуют ли какие-либо конкретные журналы консоли в Gradle, которые указывают на это? Я хотел бы подтвердить, что на самом деле использовалась обработка добавочной аннотации.

1 Ответ

1 голос
/ 15 мая 2019

Я смог определить это, добавив

kapt.verbose=true

в gradle.properties в корневом проекте.Это приводит к тому, что при изменении общедоступных методов в консоли выводится следующее:

Javac options: {}
[incremental apt] Changed files: [/Users/me/workspace/my-project/core/common/build/tmp/kapt3/stubs/foo/bar/ChangedClassName.java]
...
[INFO] Need to discovery annotation processors in the AP classpath
[INFO] Annotation processors: toothpick.compiler.factory.FactoryProcessor, toothpick.compiler.memberinjector.MemberInjectorProcessor
[INFO] Processing java sources with annotation processors: /Users/me/workspace/my-project/core/common/build/tmp/kapt3/stubs/foo/bar/ChangedClassName.java
[INFO] Annotation processing complete, errors: 0, warnings: 0
[INFO] Annotation processor stats:
[INFO] IncrementalProcessor: total: 61 ms, init: 1 ms, 3 round(s): 59 ms, 0 ms, 1 ms
[INFO] IncrementalProcessor: total: 1 ms, init: 1 ms, 3 round(s): 0 ms, 0 ms, 0 ms

Это когда использовалась обработка добавочной аннотации.При выполнении чистой сборки это печатает:

Javac options: {}
[incremental apt] Changed files: []
...
[INFO] Need to discovery annotation processors in the AP classpath
[INFO] Annotation processors: toothpick.compiler.factory.FactoryProcessor, toothpick.compiler.memberinjector.MemberInjectorProcessor
[INFO] Processing java sources with annotation processors: [ALL THE  FILES IN THE MODULE ARE LISTED HERE]
[INFO] Annotation processing complete, errors: 0, warnings: 0
[INFO] Annotation processor stats:
[INFO] IncrementalProcessor: total: 124 ms, init: 1 ms, 3 round(s): 122 ms, 1 ms, 0 ms
[INFO] IncrementalProcessor: total: 1 ms, init: 0 ms, 3 round(s): 1 ms, 0 ms, 0 ms

Зубочистка - это используемая мной структура DI, которая с версии 2.x поддерживает пошаговую обработку аннотаций.

Если есть процессор аннотаций, которыйне инкрементно, это также печатает, например:

[INFO] Incremental KAPT support is disabled. Processors that are not incremental: butterknife.compiler.ButterKnifeProcessor.
...