SBT dependsOn RootProject: doesn't compile the dependency
banana-rdf, playframework-2.0, sbt, scala
Solution
The `RootProject(file("../banana-rdf"))` project reference just references the root project, and what you really need is a reference to the `banana-rdf` subproject (in the `rdf` subdirectory).
The available subprojects are defined in https://github.com/w3c/banana-rdf/blob/master/project/build.scala. There are a few:
[main]> projects
[info] In file:/Users/jacek/sandbox/stackoverflow/19832655/
[info] * main
[info] In https://github.com/w3c/banana-rdf.git
[info] banana
[info] banana-jena
[info] banana-rdf
[info] banana-rdf-test-suite
[info] banana-sesame
[info] examples
[info] experimental
[info] ldp
[info] patch
To reference `banana-rdf` you should then use the following `ProjectRef` pointing at a right module (subproject) in a build configuration. Note `ProjectRef` as well as the name of the subproject - `banana-rdf`.
lazy val bananaRdfProject =
ProjectRef(uri("https://github.com/w3c/banana-rdf.git"), "banana-rdf")
With the `ProjectRef` you should be able to resolve any types defined in the `banana-rdf` subproject.
Problem
I have a pretty simple configuration: ``` //lazy val bananaRdfProject = RootProject( uri("git://github.com:stample/banana-rdf.git#"+bananaGitBranch) ) // lazy val bananaRdfProject = RootProject( uri("https://github.com/stample/banana-rdf.git#"+bananaGitBranch) ) // lazy val bananaRdfProject = ProjectRef( uri("https://github.com/stample/banana-rdf.git#"+bananaGitBranch) ,"banana-rdf") lazy val bananaRdfProject = RootProject( file("../banana-rdf") ) lazy val main = play.Project(appName, appVersion, appDependencies).settings(...) .dependsOn( bananaRdfProject ) ``` I tried using the 4 different project declarations above for bananaRdfProject. As I may edit this banana-rdf locally, I want it to be recompiled each time I build my play project, so that I do not have to publish the banana-rdf... But when I try to compile my main play project, that uses banana-rdf, it doesn't compile banana-rdf, but tries to compile the main project: the compilation fails because banana-rdf classes are missing in the classpath. ``` sebastien@clemence-XPS-L412Z:rww-play (master *%)$ ./play.old/play [info] Loading project definition from /home/sebastien/Bureau/rww-play/project [warn] there were 1 deprecation warning(s); re-run with -deprecation for details [warn] one warning found [info] Loading project definition from /home/sebastien/Bureau/banana-rdf/project [info] Updating {file:/home/sebastien/Bureau/banana-rdf/project/}banana-rdf-build... [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [info] Compiling 2 Scala sources to /home/sebastien/Bureau/banana-rdf/project/target/scala-2.10/sbt-0.13/classes... [warn] there were 11 deprecation warning(s); re-run with -deprecation for details [warn] there were 2 feature warning(s); re-run with -feature for details [warn] two warnings found [info] Set current project to RWWeb (in build file:/home/sebastien/Bureau/rww-play/) _ _ __ | | __ _ _ _ | '_ \| |/ _' | || | | __/|_|\____|\__ / |_| |__/ play 2.2-TLS built with Scala 2.10.3-RC3 (running Java 1.7.0_45), http://www.playframework.com > Type "help play" or "license" for more information. > Type "exit" or use Ctrl+D to leave this console. [RWWeb] $ compile [info] Updating {file:/home/sebastien/Bureau/banana-rdf/}banana... [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [info] Updating {file:/home/sebastien/Bureau/rww-play/}RWWeb... [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [info] Compiling 53 Scala sources and 1 Java source to /home/sebastien/Bureau/rww-play/target/scala-2.10/classes... [error] /home/sebastien/Bureau/rww-play/app/controllers/CORSProxy.scala:4: object banana is not a member of package org.w3 [error] import org.w3.banana.plantain.Plantain [error] ^ [error] /home/sebastien/Bureau/rww-play/app/controllers/CORSProxy.scala:7: not found: type Plantain [error] object CORSProxy extends org.www.readwriteweb.play.CORSProxy[Plantain](webClient) ................. ``` Isn't it supposed to compile banana-rdf before trying to compile my main project? If not, what is the point of depending on an external RootProject?