我在一个文件夹中有许多相关的sbt项目。它们在Build.sbt
中都具有相同的值,例如依赖性。
我想将相同的值从所有sbt文件移至单独的文件。但是不想使用multibuild。只需包含上层目录中的其他一些sbt文件。
例如,我的目录结构如下所示:
MyRepository
|- Dependencies.sbt
|- MyProject1
|- src
|- Build.sbt
|- MyProject2
|- src
|- Build.sbt
在该示例中,如何在Dependencies.sbt
中包含Build.sbt
?
答案 0 :(得分:0)
通过在project /中创建普通的.scala文件,在.sbt文件之间重用代码。 project /中的代码将可在.sbt文件中使用。
如果我没记错的话,一个.sbt文件中的定义对于其他.sbt文件是不可见的,至少在较旧的版本中是不可见的。
基本上,解决方案是使用Dependencies.scala
而不是Dependencies.sbt
并在那里定义公共部分。
检查插图,here,
您创建project / Dependencies.scala以便在一处跟踪依赖关系。
import sbt._
object Dependencies {
// Versions
lazy val akkaVersion = "2.3.8"
// Libraries
val akkaActor = "com.typesafe.akka" %% "akka-actor" % akkaVersion
val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % akkaVersion
val specs2core = "org.specs2" %% "specs2-core" % "2.4.17"
// Projects
val backendDeps =
Seq(akkaActor, specs2core % Test)
}
Dependencies
对象将在build.sbt
中可用。
您需要在import Dependencies._
文件中build.sbt
。
import Dependencies._
ThisBuild / organization := "com.example"
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / scalaVersion := "2.12.8"
lazy val backend = (project in file("backend"))
.settings(
name := "backend",
libraryDependencies ++= backendDeps
)