Объяснение можно найти в официальной документации плагина Java Библиотека , особенно в разделе API и разделение реализации глава:
Плагин предоставляет две конфигурации, которые можно использовать для объявления зависимостей: API и реализация. Конфигурация api должна использоваться для объявления зависимостей, которые экспортируются библиотечным API, тогда как конфигурация реализации должна использоваться для объявления зависимостей, которые являются внутренними для компонента.
Основная идея с конфигурацией APi чтобы избежать утечки внутренних зависимостей библиотечного модуля в путь к классу потребителя библиотеки.
В вашем случае LibB
рассматривается как внутренняя зависимость от LibA
, как это определено в конфигурации implementation
, следовательно, вы не должны обращаться к LibB
непосредственно в вашем модуле App
.
Если вам нужно использовать библиотеку LibB
с App
, просто объявите прямую зависимость от App
до LibB
, с конфигурацией api
или implementation
.