我有多个彼此独立的项目。 它们共享多个库(reactivemongo,redis缓存,akka流等)。
我想构建一个“父” SBT项目,以便所有“子”项目继承具有相同版本的共享库。
这可以在SBT中完成吗?有人可以共享一个代码示例/文档吗? 任何帮助表示赞赏:),谢谢。
编辑:
更具体地说: 我在Github中有2个存储库(child1,child2)。
我想创建一个名为“ parent”的第三个存储库,其中将包含一个build.sbt,以便其他存储库继承自该存储库。
答案 0 :(得分:1)
类似的事情应该起作用:
lazy val commonSettings = libraryDependencies ++= Seq(
"org.reactivemongo" %% "reactivemongo" % "0.16.3"
)
lazy val moduleA = (project in file("moduleA"))
.settings(commonSettings)
lazy val moduleB = (project in file("moduleB"))
.settings(commonSettings)
lazy val root = (project in file(".")).settings()
.aggregate(moduleA, moduleB)
在https://www.scala-sbt.org/1.x/docs/Multi-Project.html处查看更多内容。
答案 1 :(得分:1)
使用sbt构建多个项目。
lazy val global = project
.in(file("."))
.settings(settings)
.aggregate(
common,
project1,
project2
)
lazy val common = project
.settings(
name := "common",
settings,
libraryDependencies ++= commonDependencies
)
lazy val project1 = project
.settings(
name := "multi1",
settings,
libraryDependencies ++= commonDependencies ++ Seq(
"org.apache.parquet" % "parquet-avro" % "1.7.0",
"org.apache.kafka" % "kafka-clients" % "0.10.1.0"
)
)
.dependsOn(
common
)
lazy val project2 = project
.settings(
name := "multi2",
settings,
libraryDependencies ++= commonDependencies ++ Seq(
"org.scalikejdbc" %% "scalikejdbc" % "2.0.0"
)
)
.dependsOn(
common
)
lazy val commonSettings = Seq(
scalacOptions ++= compilerOptions,
resolvers ++= Seq(
"Local Maven Repository" at "file://" + Path.userHome.absolutePath +
"/.m2/repository",
Resolver.sonatypeRepo("releases"),
Resolver.sonatypeRepo("snapshots")
)
)
lazy val commonDependencies = Seq(
"org.slf4j" % "slf4j-simple" % "1.7.25",
"com.zaxxer" % "HikariCP" % "2.5.1"
"com.oracle" % "ojdbc6" % "11.2.0.4"
)
请参考链接https://github.com/pbassiner/sbt-multi-project-example以获取更多信息
希望这会有所帮助!