我有一个Scala应用程序和一个通用核心库的以下设置:root
-> /ApplicationA
-> /project
-> /build.sbt
-> /CoreLibrary
-> /project
-> /build.sbt
Run Code Online (Sandbox Code Playgroud)
我想从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)
Run Code Online (Sandbox Code Playgroud)
但是,在编译ApplicationA时,SBT抱怨依赖项只能是子目录!!:
java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA
Run Code Online (Sandbox Code Playgroud)
这似乎完全是直截了当的,这种项目依赖的正确方法是什么?
jwi*_*ndy 46
您可以像这样对项目执行源依赖:
lazy val core = RootProject(file("../CoreLibrary"))
val main = Project(id = "application", base = file(".")).dependsOn(core)
Run Code Online (Sandbox Code Playgroud)
我有一个多模块构建玩一个工作示例:https://github.com/ahoy-jon/play2MultiModule/blob/master/playapp/project/Build.scala
但我认为这样做的正确方法(取决于你的背景)就是创造一个
-> /project/
-> Build.scala
-> /ApplicationA
-> /project
-> /build.sbt
-> /CoreLibrary
-> /project
-> /build.sbt
Run Code Online (Sandbox Code Playgroud)
引用这两个项目以及它们之间的依赖关系.
Max*_*nce 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")
Run Code Online (Sandbox Code Playgroud)
sbt-eclipse也有效.
Mus*_*afa 13
从sbt 0.13开始,您可以直接创建多项目定义.sbt
而无需Build.scala
文件.
因此,将以下内容添加到 ApplicationA/project/build.sbt就足够了.
lazy val core = RootProject(file("../CoreLibrary"))
val main = Project(id = "application", base = file(".")).dependsOn(core)
Run Code Online (Sandbox Code Playgroud)