java—如何包含一个仅用于编译而非直接使用的依赖库?

rlcwz9us  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(166)

我有一个 App 模块和两个库模块 X 以及 Y 哪里 App 取决于 X 以及 X 取决于 Y .

┌─────┐
│ App │
└─────┘
   │ uses
   ▼
┌─────┐
│  X  │
└─────┘
   │ uses
   ▼
┌─────┐
│  Y  │
└─────┘

还有一节课 XClassX 以及 YClassY ,其中一个延伸另一个:

// In module X:
class XClass : YClass

// In module Y:
class YClass

问题是 Y 必须是可见的 App 为了让它工作,否则我会出现这样的错误: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath: class XClass, unresolved supertypes: YClass 自然的解决办法是 Y 作为一个 api 附属国:

// In build.gradle in X:
dependencies {
    api project(':y')
}

所以问题是:
我不想让用户进来 App 能够使用 Y . 我如何才能做到这一点,使它仍然编译?
我正在出版 X 以及 Y 通过 maven-publish ,因此理想情况下,该解决方案在发布时也应该有效。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题