(提前提出長問題,簡化tl;博士在底部)。在兩個ScalaJS SBT項目之間使用DependsOn
我有SBT建成兩個ScalaJS項目 - 「MYAPP」 和 「MYLIB」,在下面的目錄結構
root/build.sbt
root/myapp/build.sbt
root/myapp/jvm/
root/myapp/js/
root/myapp/shared/
root/mylib/build.sbt
root/mylib/jvm
root/mylib/js
root/mylib/shared
lib
出口命名的神器 「com。示例:MYLIB:0.1」,這是用作庫的依賴關係myapp
。
MYAPP和MYLIB是在單獨的存儲庫,包含自己的構建文件,並且應該能夠完全建立獨立(即它們必須包含自己個人的構建配置)。
在生產中,它們將分開構建,mylib
首先作爲maven工件發佈,然後分別構建myapp
。
但是,在開發中,我希望能夠將它們合併到父SBT項目中,以便在每次更改後無需使用publishLocal
即可並行開發這兩個項目。
在傳統的(不scalajs)項目,這將是很容易
$ROOT/build.sbt:
lazy val mylib = project
lazy val myapp = project.dependsOn(mylib)
但是在ScalaJS,我們其實有每個模塊內的兩個項目 - appJVM
,appJS
,libJVM
和libJS
。因此,上述配置只能找到聚合根項目,並且不會將dependsOn
配置正確應用於實際的JVM和JS項目。
(即MYAPP和mylib中build.sbt各包含兩個項目,合計項目根)
理想情況下,我想能夠做到像下面
lazy val mylibJVM = project
lazy val myappJVM = project.dependsOn(mylibJVM)
lazy val mylibJS = project
lazy val myappJS = project.dependsOn(myappJS)
不幸的是這只是在根中創建新項目而不是自己導入子項目。
我也嘗試的路徑不同組合(如)
lazy val mylibJVM = project.in(file("mylib/jvm"))
但這並不見mylib
在build.sbt文件中的配置最終我一直對同跑起來問題 - 將現有的多項目SBT項目導入到父sbt文件時,它會導入根項目,但似乎沒有提供從現有多模塊SBT文件導入子項目的方式,這種方式允許我添加dependsOn
配置到它。
TL;博士
如果我有
root/mylib/build.sbt
與定義的多個項目和root/myapp/build.sbt
與定義
多個項目是否有可能各個子項目導入root/build.sbt
代替來自子模塊的根項目?
即,我可以有兩層多項目構建。
我scalajs和SBT知識正是一歲,當被介紹爲scalajs項目,甚至它意味着什麼,但我的插件0.6.4版本的JVM和js之間的分裂,我不知道,我這樣做: 1)創建依賴於從LIB lib和副本輸出的fastOptJs任務到App 2)使應用程序的fastOptJs任務複印機任務取決於這個 讓我知道,如果這部分在這種情況下,幫助我可以嘗試幫助更多。 – 0fnt