Почему СБТ консоль не видит пакеты из подпроекта в Multi-модуль проекта?
Это мой проект/построить.скала!--5-->:
package sutils
import sbt._
import Keys._
object SutilsBuild extends Build {
scalaVersion in ThisBuild := "2.10.0"
val scalazVersion = "7.0.6"
lazy val sutils = Project(
id = "sutils",
base = file(".")
).settings(
test := { },
publish := { }, // skip publishing for this root project.
publishLocal := { }
).aggregate(
core
)
lazy val core = Project(
id = "sutils-core",
base = file("sutils-core")
).settings(
libraryDependencies += "org.scalaz" % "scalaz-core_2.10" % scalazVersion
)
}
кажется, что это компиляция моего проекта просто отлично, но когда я вхожу в консоль, я не могу импортировать какой-либо код, который только что был скомпилирован?!
$ sbt console
scala> import com.github.dcapwell.sutils.validate.Validation._
<console>:7: error: object github is not a member of package com
import com.github.dcapwell.sutils.validate.Validation._
что я здесь делаю не так? Пытаясь посмотреть на использование, я не вижу способа сказать, какой подпроект загружать в консоли
$ sbt about
[info] Loading project definition from /src/sutils/project
[info] Set current project to sutils (in build file:/src/sutils/)
[info] This is sbt 0.13.1
[info] The current project is {file:/src/sutils/}sutils 0.1-SNAPSHOT
[info] The current project is built against Scala 2.10.3
[info] Available Plugins: org.sbtidea.SbtIdeaPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.3
1 ответов
есть решение от @Alexey-Romanov, чтобы начать console
задача в проекте, в котором находятся классы для импорта.
sbt sutils/console
однако есть другое решение, которое делает root sutils
проект зависит от другое core
. Используйте следующий фрагмент для настройки проекта-note dependsOn core
это принесет классы из до 'ы.
lazy val sutils = Project(
id = "sutils",
base = file(".")
).settings(
test := { },
publish := { }, // skip publishing for this root project.
publishLocal := { }
).aggregate(
core
).dependsOn core
кстати, вы действительно должны использовать более простой build.sbt
для вашего используйте случай следующим образом:
scalaVersion in ThisBuild := "2.10.0"
val scalazVersion = "7.0.6"
lazy val sutils = project.in(file(".")).settings(
test := {},
publish := {}, // skip publishing for this root project.
publishLocal := {}
).aggregate(core).dependsOn(core)
lazy val core = Project(
id = "sutils-core",
base = file("sutils-core")
).settings(
libraryDependencies += "org.scalaz" %% "scalaz-core" % scalazVersion
)
вы можете сделать это еще проще, когда вы разделите сборку на два build.sbt
s, каждый для проектов.