簡體   English   中英

SBT:如何將上層目錄中的sbt文件包括到我的build.sbt中?

[英]SBT: How to include sbt files in upper directory to my build.sbt?

我在一個文件夾中有許多相關的sbt項目。 它們在Build.sbt都具有相同的值,例如依賴關系。

我想將相同的值從所有sbt文件移至單獨的文件。 但是不想使用multibuild。 只需要包括上層目錄中的其他一些sbt文件。

例如,我的目錄結構如下所示:

MyRepository
  |- Dependencies.sbt
  |- MyProject1
      |- src
      |- Build.sbt
  |- MyProject2
      |- src
      |- Build.sbt

在該示例中,如何在Build.sbt包括Dependencies.sbt

通過在project /中創建普通的.scala文件,可以在.sbt文件之間重用代碼。 project /中的代碼將可在.sbt文件中使用。

如果我沒有記錯的話,一個.sbt文件中的定義對於其他.sbt文件是不可見的,至少在較舊的版本中不可見。

基本上,解決方案是使用: Dependencies.scala而不是Dependencies.sbt並在那里定義公共部分。

檢查圖示,可以在這里找到

您創建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可用。 您需要在build.sbt文件中import Dependencies._

    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
      )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM