我定義了多專案 SBT 專案。我在我的根專案中宣告了所有依賴項。當我sbt assembly從根目錄運行時,一切正常。
如何sbt assembly從子專案目錄運行?當我嘗試這樣做時,SBT 找不到根 build.sbt 檔案中宣告的依賴項。
例如,我在 root build.sbt 中做這樣的事情:
ThisBuild / organization := "org.example"
ThisBuild / version := "1.0"
ThisBuild / scalaVersion := "2.11.12"
...
lazy val commonSettings = Seq(
libraryDependecies = Seq(
"org.apache.spark" %% "spark-core" % sparkVersion
, "org.apache.spark" %% "spark-hive" % sparkVersion
, "org.apache.spark" %% "spark-sql" % sparkVersion
// other dependencies
).map(_% Provided) Seq(
"org.postgresl" % "postgresql" % "42.2.24"
// other dependencies
)
)
lazy val root = (project in file("."))
.aggregate(subproject)
.settings(
name := "root"
)
lazy val subproject = (project in file("subproject"))
.setting(
commonSettings,
name := "subproject"
//...Other settings
)
val allProjects = ScopeFilter(
inProject(
subproject
)
)
build.sbt 從子專案目錄:
assembly / mainClass := Some("org.example.Main")
//other settings
當我sbt assembly從根目錄運行時,一切正常。當我從子專案目錄運行它時,我收到如下錯誤:
物件 apache 不是包 org 的成員
匯入 org.apache.spark.sql.expressions.UserDefinedFunction
是否可以從子專案目錄編譯 jar 檔案?
uj5u.com熱心網友回復:
您必須從定義主專案的目錄中構建。
但是,您不必總是構建所有內容。你幾乎可以做:
# in project root directory
sbt "subproject / assembly"
所以甚至沒有問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422310.html
標籤:
上一篇:RegInit僅在重置時初始化值
下一篇:并發流不會向控制臺列印任何內容
