我想在某些任務中覆蓋項目的依賴關係。 我有一個使用spark的sbt多項目。如何覆蓋sbt中某些任務的依賴關係
lazy val core = // Some Project
val sparkLibs = Seq(
"org.apache.spark" %% "spark-core" % "1.6.1"
)
val sparkLibsProvided = Seq(
"org.apache.spark" %% "spark-core" % "1.6.1" % "provided"
)
lazy val main = Project(
id = "main",
base = file("main-project"),
settings = sharedSettings
).settings(
name := "main",
libraryDependencies ++= sparkLibs,
dependencyOverrides ++= Set(
"com.fasterxml.jackson.core" % "jackson-databind" % "2.4.4"
)
).dependsOn(core)
當我嘗試在我的紗線羣上提交脂肪罐時,我使用https://github.com/sbt/sbt-assembly任務。但在這種情況下,我想使用的sparkLibs
sparkLibsProvided
,而不是像這樣:
lazy val sparkProvided = (project in assembly).settings(
dependencyOverrides ++= sparkLibsProvided.toSet
)
我怎樣才能正確地重寫此依賴?
爲什麼你不能將這個依賴標記爲所有範圍的'provided'? – Sergey
@Sergey我想在本地測試它,所以我需要沒有'provided'的依賴關係。我可以在本地測試我的項目時刪除'provieded',但是,我知道我很懶 – dazebug
據我所知,'提供'範圍是專門用於'編譯'和'測試'範圍。如果你想通過運行一個主類而不是在測試中在本地進行測試,那麼你可以手動提供依賴關係:) – Sergey