SBT-多个项目取决于一位家长

时间:2019-03-06 15:59:03

标签: scala dependencies sbt

我有多个彼此独立的项目。 它们共享多个库(reactivemongo,redis缓存,akka流等)。

我想构建一个“父” SBT项目,以便所有“子”项目继承具有相同版本的共享库。

这可以在SBT中完成吗?有人可以共享一个代码示例/文档吗? 任何帮助表示赞赏:),谢谢。

编辑:

更具体地说: 我在Github中有2个存储库(child1,child2)。

我想创建一个名为“ parent”的第三个存储库,其中将包含一个build.sbt,以便其他存储库继承自该存储库。

2 个答案:

答案 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以获取更多信息

希望这会有所帮助!