Как подделать многократный проход для аннотаций kapt - PullRequest
0 голосов
/ 07 августа 2020

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

По иронии судьбы после запуска всех аннотаций код соответствует, за исключением заглушек kapt3 ... потому что неизвестные типы.

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

но так что это чушь склонного к ошибкам котла, мне придется напечатать его, если это не сработает.

В качестве альтернативы, есть ли способ удалить заглушки из моего обработчика аннотаций?

Или я просто SOL, а kapt несколько ограничен? (Кстати, новый KSP AFAICT)

Спасибо

1 Ответ

0 голосов
/ 08 августа 2020

Добавляем это для потомков.

Я заставил его работать, используя проекты с несколькими уровнями.

Я использую составные сборки, чтобы заставить это работать. Вы можете прочитать об этом здесь: Gradle Composit Builds

Внизу у вас есть все ваши аннотации и процессор аннотаций. В моем случае у меня есть только один процессор, который обрабатывает все аннотации, которые я определил.

У меня есть другой проект Gradle, который использует аннотации для определения «первого прохода» генерируемых типов. Это зависит от проекта аннотации (compileOnly), а также от зависимости kapt.

Тогда мой последний проект, который нормально зависит от проекта «первого прохода», и зависимость kapt от проекта аннотации (compileOnly снова).

У меня работает, потому что мне нужно всего 2 прохода. Это означает, что первый проход генерирует все типы, которые необходимо определить другим проходам.

вроде уродливо, но работает. Если кто знает, как лучше, я бы хотел это услышать.

...