2

I have a multi module project in IntelliJ, as in this screen capture shows, contexProcessor module depends on contextSummary module.

IntelliJ takes care of everything once I setup the dependencies in Project Structure.

enter image description here

However, when I run sbt test with the following setup in build.sbt, I got an error complaining that it can't find the packages in contextSummary module.

name := "contextProcessor"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.2" % "test"

enter image description here

How to teach sbt that the missing modules are found?

prosseek
  • 182,215
  • 215
  • 566
  • 871

2 Answers2

1

I could use the build.sbt file in the main root directory.

lazy val root = (project in file(".")).aggregate(contextSummary, contextProcessor)
lazy val contextSummary = project
lazy val contextProcessor = project.dependsOn(contextSummary)

Reference: http://www.scala-sbt.org/0.13.5/docs/Getting-Started/Multi-Project.html

For testing only one project, I can use project command in sbt.

> sbt
[info] Set current project to root (in build file:/Users/smcho/Desktop/code/ContextSharingSimulation/)
> project contextProcessor
[info] Set current project to contextProcessor (in build file:/Users/smcho/Desktop/code/ContextSharingSimulation/)
> test

For batch mode as in How to pass command line args to program in SBT 0.13.1?

sbt "project contextProcessor" test
Community
  • 1
  • 1
prosseek
  • 182,215
  • 215
  • 566
  • 871
0

I think a simple build.sbt might not be enough for that.

You would need to create a more sophisticated project/Build.scala like that:

import sbt._
import sbt.Keys._

object Build extends Build {
  lazy val root = Project(
    id = "root",
    base = file("."),
    aggregate = Seq(module1, module2)
  )

  lazy val module1 = Project(
    id = "module1",
    base = file("module1-folder"),
    settings = Seq(
      name := "Module 1",
      version := "1.0",
      scalaVersion := "2.11.7",
      libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.2" % "test"

  lazy val module2 = Project(
    id = "module2",
    base = file("module2-folder"),
    dependencies = Seq(module1),
    settings = Seq(
      name := "Module 2",
      version := "1.0",
      scalaVersion := "2.11.7",
      libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.2" % "test"
}
Sascha Kolberg
  • 7,092
  • 1
  • 31
  • 37