scala - org - ¿Cómo hacer referencia al proyecto sbt externo de otro proyecto sbt?
scala sbt install windows (3)
Tengo la siguiente configuración de una aplicación Scala y una biblioteca central común: root
-> /ApplicationA
-> /project
-> /build.sbt
-> /CoreLibrary
-> /project
-> /build.sbt
Quiero agregar una referencia de ApplicationA a CoreLibrary a la referencia del proyecto Eclipse, para que cada vez que CoreLibrary cambie ApplicationA se construya también. He probado los siguientes contenidos de build.Scala for ApplicationA:
val core = Project(
id = "platform-core",
base = file("../CoreLibrary"))
val main = Project(id = "application, base = file(".")).dependsOn(core)
Sin embargo, al compilar ApplicationA SBT se queja de que una dependencia solo puede ser un subdirectorio !!
java.lang.AssertionError: assertion failed: Directory C:/git/CoreLibrary is not contained in build root C:/git/ApplicationA
Esto parece completamente sencillo, ¿cuál es la forma correcta de tener esta dependencia del proyecto?
Con sbt 0.12.1 parece posible obtener una referencia simple a un proyecto:
RootProject
ProjectRef
lugar de RootProject
http://www.scala-sbt.org/0.12.1/api/sbt/ProjectRef.html
ProjectRef(file("../util-library"), "util-library")
sbt-eclipse también funciona.
Desde sbt 0.13 , puede crear definiciones de proyectos múltiples directamente en .sbt
sin necesidad de un archivo Build.scala
.
Entonces, sería suficiente agregar lo siguiente a ApplicationA / project / build.sbt .
lazy val core = RootProject(file("../CoreLibrary"))
val main = Project(id = "application", base = file(".")).dependsOn(core)
Puedes hacer una dependencia de origen en tu proyecto así:
lazy val core = RootProject(file("../CoreLibrary"))
val main = Project(id = "application", base = file(".")).dependsOn(core)
Tengo un ejemplo de trabajo con una compilación multimódulo: https://github.com/ahoy-jon/play2MultiModule/blob/master/playapp/project/Build.scala
Pero creo que la forma correcta (depende de tu contexto) de hacerlo es crear un
-> /project/
-> Build.scala
-> /ApplicationA
-> /project
-> /build.sbt
-> /CoreLibrary
-> /project
-> /build.sbt
Haciendo referencia a los dos proyectos y las dependencias entre ellos.