我有一个由SBT管理的scala项目,其中包含许多类,这些类是链接到专有代码的适配器。这些商业许可证禁止分发链接库,以及我自己编写的适配器代码。
我想从我的其余代码中隔离这些适配器,以便理论上我可以将我的项目作为开源分发。我需要确保每个适配器
--with-xxx
时类似./configure
)这样的目录结构应该是什么样的? SBT项目怎么样?如果可能的话,我想坚持使用通常的Gradle目录结构。
需要考虑的问题是每个适配器都依赖于核心项目(即它们继承了主项目中定义的Adapter
接口),而核心项目依赖于各个适配器。因此,我不确定如何设置它以避免循环依赖,同时将核心代码与适配器代码隔离。
答案 0 :(得分:1)
可以通过这种方式实现:
项目布局:
root
├── adapter-a
│ └── src
│ └── main
│ ├── resources
│ └── scala
├── adapter-api
│ └── src
│ └── main
│ ├── resources
│ └── scala
├── adapter-b
│ └── src
│ └── main
│ ├── resources
│ └── scala
└── core
└── src
└── main
├── resources
└── scala
build.sbt:
lazy val root = project
.in(file("."))
.aggregate(adapterApi, core, adapterA, adapterB)
lazy val adapterApi = project
.in(file("adapter-api"))
.settings(
version := "1.0"
)
lazy val core = project
.in(file("core"))
.dependsOn(adapterApi)
.settings(
version := "1.5"
)
lazy val adapterA = project
.in(file("adapter-a"))
.dependsOn(adapterApi, core)
.settings(
version := "1.2"
)
lazy val adapterB = project
.in(file("adapter-b"))
.dependsOn(adapterApi, core)
.settings(
version := "1.0"
)