我正在开始一个具有许多独立组件的中型项目,这些组件可以在Android或JVM上运行,我想知道如何将其分解为SBT项目,以便依赖项表现良好。这是我到目前为止所得到的:
核心/用于平台无关的核心代码,不得在任何平台上中断,这包括组件启动器的接口
android-core /用于依赖于android库的核心接口的实现(注意,这个项目取决于sbt-android)
jvm-core /用于依赖于不能很好地运行或依赖于android的核心接口的实现
到目前为止一直很好,但现在是时候在各个组件中使用核心项目了。我的要求是:
- 每个组件应该编译成一个单独的Android应用程序(可能共享一个aar库?),并且应用程序可以单独安装(仍然通过sbt,一个android:install任务)
- 有一个包装器构建,以便所有项目构建都可以在同一个地方完成。
- 可以轻松扩展新鲜的研究生可以正确添加组件(如果添加组件不需要对构建进行任何更改,则可获得奖励积分)。
- 如果组件依赖于特定于平台的库,则不会阻止其他组件被非法编译。
我遇到的一些问题是:
- 每个组件都应该有一个sbt项目吗? (我倾向于这么认为,以便学生可以在不在两个平台上运行的库中添加依赖项,但我可能会出错)
- 如果是这样,每个组件的项目是否需要sbt构建?
- 如果是这样,我如何引导组件构建以获得组件作者的最低技能?
- 稍后我将添加代码生成以从描述生成消息类(想想protobuf / thrift),这将在组件编译之前作为第一遍运行,我假设可以这样做,但是你有一个解释如何的链接吗?
- 如果两个组件分别针对彼此的消息进行编译会产生不可能的循环依赖关系吗?
基本上我正在寻找智慧和经验,我确信一旦我知道用什么术语来搜索文档以及大致如何将整个事物挂在一起,我确信我可以破解我的基本细节。谢谢你的帮助!