Транзитивная ссылка не работает в gradle при использовании проекта реализации - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть проект Core, в котором есть зависимости от другой библиотеки.

Core build.gradle
    dependencies {
        implementation 'com.jakewharton:butterknife:9.0.0-rc2'
        annotationProcessor  'com.jakewharton:butterknife-compiler:9.0.0-rc2'
    }

И у меня есть проект другого пользователя, который ссылается на Core.Когда проект User ссылается на библиотеку Core:

User build.gradle
    dependencies {
        implementation 'com.example: core: 1.0'
    }

В проекте User я могу получить доступ к классам Butterknife, но когда я ссылаюсь на проект Core

User build.gradle
    dependecies{
        implementation project(":core")
    }

, я не могу получить доступк классам «нож-нож» (ошибка компиляции; подробности см. в выводе ошибки компилятора.)

Можно ли ссылаться на ядро ​​и использовать зависимости, на которые ссылается ядро?

1 Ответ

0 голосов
/ 14 декабря 2018

Так работает implementation конфигурация .

Плагин предоставляет две конфигурации , которые можно использовать для объявления зависимостей: apiи implementation.Конфигурация api должна использоваться для объявления зависимостей, которые экспортируются библиотечным API, тогда как конфигурация implementation должна использоваться для объявления зависимостей, которые являются внутренними для компонента.

Зависимости, появляющиеся в api Конфигурации будут транзитивно предоставлены потребителям библиотеки и, как таковые, появятся на пути к классам компиляции потребителей. Зависимости, обнаруженные в конфигурации implementation, с другой стороны, не будут видны потребителям и, следовательно, не попадут в путь к классам компиляции потребителей.

Любой объявит ButterНож как зависимость api или явно зависит от нее в user/build.gradle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...