52

Scala アプリケーションと共通のコア ライブラリを次のようにセットアップしています。

 -> /ApplicationA
   -> /project
     -> /build.sbt
 -> /CoreLibrary
   -> /project
     -> /build.sbt

ApplicationA から CoreLibrary への参照を Eclipse プロジェクト参照に追加して、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

これは完全に簡単に思えますが、このプロジェクトの依存関係を持つ正しい方法は何ですか?

4

3 に答える 3

46

あなたはそのようにあなたのプロジェクトにソース依存関係を作ることができます:

 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つのプロジェクトとそれらの間の依存関係を参照します。

于 2012-07-25T16:03:08.577 に答える
23

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 も動作します。

于 2013-03-05T16:39:09.937 に答える