Я разработал две библиотеки: cms-lib
и common-lib
.
cms-lib
зависит от common-lib
, как это
# gradle.build of cms-lib
dependencies {
implementation 'com.example.shared:common-lib:1.0-SNAPSHOT'
}
common-lib
содержит некоторые классы c публикации - например, com.example.shared.common.Content.java
Идея состоит в том, что cms-lib
предназначено для использования сторонними клиентами (они должны объявить его в зависимостях gradle), тогда как common-lib
должно быть скрыто от клиента (клиент не обязан объявлять свои зависимости gradle). Поэтому они просто объявляют только cms-lib
- вот так:
# A
# build.gradle of a consumer of `cms-lib`
dependencies {
implementation 'com.example.shared:cms-lib:1.0-SNAPSHOT'
}
Это означает, что common-lib
является вложенной зависимостью cms-lib
.
Я ожидаю, что классы publi c из вложенной зависимости common-lib
, может быть получен клиентом cms-lib
. Но оказывается, что они не доступны, так как я получаю ошибку компиляции:
> Task :compileJava FAILED
C:\temp\lib-test\src\main\java\consumer\Controller.java:3: error: package com.example.shared.common does not exist
import com.example.shared.common.Content;
Кажется, что в этом случае publi c классы support-lib
не доступны во время компиляции (вероятно, только в Runtime).
Как получить доступ к вложенным зависимостям во время компиляции?