I have the following setup of a Scala application and a common core library:
root
-> /ApplicationA
-> /project
-> /build.sbt
-> /CoreLibrary
-> /project
-> /build.sbt
I want to add a reference from ApplicationA to CoreLibrary à la Eclipse project reference, so that every time CoreLibrary changes ApplicationA is built as well. I´ve tried the following contents of build.Scala for ApplicationA:
val core = Project(
id = "platform-core",
base = file("../CoreLibrary"))
val main = Project(id = "application, base = file(".")).dependsOn(core)
However, when compiling ApplicationA SBT complains that a dependency can only be a subdirectory!!:
java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA
This seems completely straightforward, what’s the correct way of having this project dependency?
You can do a source dependency on your project like that :
I have a working example with a multimodule play build : https://github.com/ahoy-jon/play2MultiModule/blob/master/playapp/project/Build.scala
But I think the proper way (it depends of your context) of doing it is to create a
referencing the two projects and the dependencies between them.