(先に長い質問、簡略化されたtl、下段にdr)。2つのScalaJS SBTプロジェクトの間でDependsOnを使用する
私はSBTで構築された2つの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.example 0.1:MYLIB" という名前のアーティファクトをエクスポートして、そのmyapp
のlibraryDependencyとして使用されます。
myappとmylibは別々のリポジトリにあり、独自のビルドファイルを含み、完全に別々にビルドできる必要があります。つまり、独自のビルド設定が必要です。
生産時には、は、別にmyapp
をビルドする前に、mavenアーティファクトとして最初に公開されます。
しかし、私はこれらを親SBTプロジェクトにマージして、変更するたびにpublishLocal
を使用することなく両方を並行して開発できるようにしたいと考えています。 appJVM
、appJS
、libJVM
とlibJS
- これはScalaJSでしかし
$ROOT/build.sbt:
lazy val mylib = project
lazy val myapp = project.dependsOn(mylib)
非常に簡単になり、伝統的な(ないscalajs)プロジェクトで
、我々は、実際には2つの各モジュール内のプロジェクトを持っています。そのため、上記の設定では、集約ルートプロジェクトのみが検出され、dependsOn
の設定は実際のJVMおよびJSプロジェクトに正しく適用されません。
理想的には、私は残念ながら、この次
lazy val mylibJVM = project
lazy val myappJVM = project.dependsOn(mylibJVM)
lazy val mylibJS = project
lazy val myappJS = project.dependsOn(myappJS)
ような何かをできるようにしたいと思い
(各build.sbtすなわちmyappのとMYLIBは二つのプロジェクト、および集約ルートプロジェクトが含まれています)サブプロジェクト自体をインポートするのではなく、ルート内に新しいプロジェクトを作成するだけです。
私も
lazy val mylibJVM = project.in(file("mylib/jvm"))
(など)のパスの様々な組み合わせを試してみた。しかし、これはmylib
にbuild.sbtファイルの構成を参照していません最終的に私が同じに直面して走り続けます問題 - 既存のマルチプロジェクトSBTプロジェクトを親sbtファイルにインポートするとき、ルートプロジェクトをインポートしますが、サブプロジェクトを既存のマルチモジュールSBTファイルからインポートしてdependsOn
構成を追加できるようにはなりませんそれに。
TL;私は定義された複数のプロジェクトを持つ
root/mylib/build.sbt
と
定義された複数のプロジェクトを持つ
root/myapp/build.sbt
をお持ちの場合は、DR ではなくroot/build.sbt
に、個々のサブプロジェクトをインポートすることは可能ですサブプロジェクトからのルートプロジェクトの?
つまり、マルチレイヤービルドのレイヤーを2つ用意できますか?
マイscalajsとSBTの知識は正確歳だと私は、JVMとJSの間で分割がscalajsのプロジェクトのために導入されたときに知っている、あるいはそれが何を意味するのかが、私のプラグインのバージョン0.6.4ではありません、Iこれを行うだろう: 1)が、これは部分的に、その場合には役立ちます場合は、私に教えてください。この に依存 2)アプリのfastOptJsタスクを作るのアプリにLIBからlibとコピー出力のfastOptJsタスクに依存コピータスクを作成しますIもっと助けようとすることができます。 – 0fnt