简体   繁体   中英

Adding module dependency information in sbt's build.sbt file

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.

在此处输入图片说明

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"

在此处输入图片说明

How to teach sbt that the missing modules are found?

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

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"
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM