【发布时间】:2017-07-19 02:17:52
【问题描述】:
我在 sbt 中有一个 commons 项目,它需要一些值存储在 Dependencies.scala 中。
.
├── build.sbt
├── project
│ └── Dependencies.scala
└── src
└── main
└── scala
commons/build.sbt
import Dependencies._
lazy val commons = (project in file("."))
.settings(
name := s"$msg commonsproject",
version := "1.0",
scalaVersion := "2.12.2"
)
commons/project/Dependencies.scala
object Dependencies {
val msg = "Hello world"
}
当我运行 sbt 时,我得到了 name 的正确值
[info] Loading project definition from /mydata/workspace/multiproject/commons/project
[info] Set current project to Hello world commonsproject (in build file:/mydata/workspace/multiproject/commons/)
> name
[info] Hello world commonsproject
>
现在,我已将其集成到顶级 sbt 项目中。
├── build.sbt(top level)
├── commons
│ ├── build.sbt
│ ├── project
│ │ └── Dependencies.scala
│ └── src
│ └── main
├── project
│ └── build.properties
└── src
├── main
│ └── scala
└── test
└── scala
build.sbt
lazy val commons = (project in file("commons"))
.settings(
name := "subproject",
version := "1.0",
scalaVersion := "2.12.2"
)
lazy val root = (project in file("."))
.settings(
name := "rootproject",
version := "1.0",
scalaVersion := "2.12.2"
).aggregate(commons)
当我从顶层运行 sbt 时,它失败并出现以下错误:
/mydata/workspace/multiproject/commons/build.sbt:1: error: not found: object Dependencies
import Dependencies._
^
/mydata/workspace/multiproject/commons/build.sbt:6: error: not found: value msg
name := s"$msg commonsproject",
^
sbt.compiler.EvalException: Type error in expression
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.</pre>
谁能知道是否可以将Dependencies.scala 保留在common 项目中并且仍然能够从顶级sbt 运行它?
目标是能够在顶层或子项目中运行 sbt,同时保持每个项目的依赖关系。
也欢迎其他实现我想要的设计
谢谢
【问题讨论】:
标签: sbt