Не удается отладить процессор аннотаций при использовании kapt и gradle
Я создаю процессор аннотаций, и недавно я переключился с использования стандартного типа аннотационного процессора на kapt, используя плагин kotlin-kapt.
Я отлаживал свой процессор с помощью команды
./gradlew --no-daemon -Dorg.gradle.debug=true :app:clean :app:compileDebugJavaWithJavac
(полные инструкции здесь: https://stackoverflow.com/a/42488641/502463 )
, а затем запуск конфигурации удаленной отладки. Когда я использовал annotationProcessor, я мог нажимать точки останова и отлаживать нормально. с kapt мой процессор работает, но я не могу отладьте его. Точки останова не срабатывают.
Моя версия kotlin-1.1.2-3
2 ответа:
На самом деле вы хотите отладить демон компилятора Kotlin, а не демон Gradle. Вот как можно передать требуемые аргументы JVM:
./gradlew <tasks> -Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket\,address=5005\,server=y\,suspend=n"
Другой ответ в целом верен, но я нашел https://medium.com/@daptronic/annotation-processing-with-kapt-and-gradle-237793f2be57 полезно для более детального рассмотрения.
Вы можете запустить что-то вроде этого
./gradlew --no-daemon clean compileDebugKotlin -Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket\,address=5005\,server=y\,suspend=n"
Или если вы хотите запустить определенный модуль
./gradlew --no-daemon :modulename:clean :modulename:compileDebugKotlin -Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket\,address=5005\,server=y\,suspend=n"
Хитрая часть
На самом деле нам нужно дождаться начала задачи компиляции Kotlin, прежде чем мы подключим отладчик, он не останавливается и не ждет, пока вы прикрепите отладчик, как с java.
Итак, вы хотите отслеживать свою сборку и искать задачу:
Это заняло у меня удручающе много времени, чтобы понять и начать работать. Теперь, как только я выполняю команду, я просто иду к IDE и помять кнопку отладчика, и мне очень повезло, что он прикрепился таким образом.:app:kaptDebugKotlin
И когда вы увидите его, сразу же перейдите к IDE и нажмите кнопку отладка на удаленной конфигурации. Если вы не приложите вовремя, задача будет просто двигаться дальше. У вас есть несколько секунд, чтобы понять это, но это немного гонка, чтобы заставить все это работать.