私はScalaアプリケーションと共通コアライブラリの次のセットアップを持っています:ルート
-> /ApplicationA
-> /project
-> /build.sbt
-> /CoreLibrary
-> /project
-> /build.sbt
ApplicationAからEclipseプロジェクトリファレンスのCoreLibraryへの参照を追加したいので、CoreLibraryが変更されるたびにApplicationAもビルドされます。 ApplicationAのbuild.Scalaの次のコンテンツを試しました。
val core = Project(
id = "platform-core",
base = file("../CoreLibrary"))
val main = Project(id = "application, base = file(".")).dependsOn(core)
ただし、ApplicationA SBTをコンパイルすると、依存関係はサブディレクトリのみである可能性があると警告されます!!:
Java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA
これは完全に簡単なようですが、このプロジェクトの依存関係を持つ正しい方法は何ですか?
あなたはそのようなプロジェクトのソース依存関係を行うことができます:
lazy val core = RootProject(file("../CoreLibrary"))
val main = Project(id = "application", base = file(".")).dependsOn(core)
マルチモジュールプレイビルドの実際の例があります: https://github.com/ahoy-jon/play2MultiModule/blob/master/playapp/project/Build.scala
しかし、私はそれを行う適切な方法(それはあなたのコンテキストに依存します)を作成することだと思います
-> /project/
-> Build.scala
-> /ApplicationA
-> /project
-> /build.sbt
-> /CoreLibrary
-> /project
-> /build.sbt
2つのプロジェクトとそれらの間の依存関係を参照します。
Sbt 0.12.1では、プロジェクトへの単純な参照を取得することが可能に思われます:
ProjectRef
の代わりにRootProject
を使用しました
http://www.scala-sbt.org/0.12.1/api/sbt/ProjectRef.html
ProjectRef(file("../util-library"), "util-library")
sbt-Eclipseも機能します。
sbt 0.1なので、.sbt
ファイルを必要とせずに、Build.scala
に直接マルチプロジェクト定義を作成できます。
したがって、以下をApplicationA/project/build.sbtに追加するだけで十分です。
lazy val core = RootProject(file("../CoreLibrary"))
val main = Project(id = "application", base = file(".")).dependsOn(core)