Зависимость Gradle видна только для процессора аннотаций - PullRequest
1 голос
/ 24 января 2020

Я хочу добавить в проект Gradle зависимость, которая будет видна процессору аннотаций во время обработки.

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

Как это можно сделать?

1 Ответ

2 голосов
/ 24 января 2020

Если вы используете последнюю версию Gradle, то зависимости процессора аннотаций объявляются в отдельной конфигурации annotationProcessor, которая разрешается только для этой цели.

Версии до 4.6, используемые для их поиска из скомпилируйте classpath, и если вам нужно использовать старые версии, я не думаю, что вы можете многое сделать.

Пример для 4.6 +:

dependencies {
    annotationProcessor 'com.google.dagger:dagger-compiler:2.8'
}

Если ваш процессор аннотаций требует какой-либо другие зависимости для компиляции вашего исходного кода, у вас нет выбора, кроме как добавить их в путь к классам компиляции, что сделает их видимыми в IDE. Но вы можете использовать конфигурацию compileOnly, чтобы ограничить область действия, чтобы они не были видны во время выполнения или были выбраны в качестве переходной зависимости. Пример:

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.10'
    annotationProcessor 'org.projectlombok:lombok:1.18.10'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...