我有一个看起来像这样的项目,使用sbt 0.13.2:
base
- project
- Build.scala
- plugins.sbt
- lib
- unmanaged jar #1
- unmanaged jar #2
- core
- src
- .......
- clp
- src
- .......
- server
- src
- ......
Run Code Online (Sandbox Code Playgroud)
其中core
包含公共代码,clp
并且server
是两个依赖的相关项目core
.
我正试图找到合适的mojo,Build.scala
以便所有这三个模块都依赖于它base/lib
.目前我lib
在每个模块中使用符号链接dir 作弊,但我想在没有符号链接的情况下自动完成.
这是一个Build.scala
文件示例- 我应该如何修改它以使依赖项工作?
import sbt._
import Keys._
object RootBuild extends Build {
lazy val buildSettings = Defaults.defaultSettings ++ Seq(
scalaVersion := "2.11.1",
unmanagedBase := baseDirectory.value / "lib"
)
lazy val standardSettings = buildSettings ++ Seq(
libraryDependencies ++= Seq(
"org.scalatest" % "scalatest_2.11" % "2.1.6" % "test",
"org.testng" % "testng" % "6.8.8"
)
)
lazy val Projects = Seq(root, core, clp)
lazy val root = Project("root", file("."), settings=standardSettings) aggregate(core, clp)
lazy val core = Project("core", file("core"), settings=standardSettings)
lazy val clp = Project("clp", file("clp"), settings=standardSettings) dependsOn core
lazy val server = Project("server", file("server"), settings=standardSettings) depensOn core
}
Run Code Online (Sandbox Code Playgroud)
这是正确的build.sbt
:
lazy val a, b = project settings(
Defaults.defaultSettings ++ Seq(
unmanagedBase := (unmanagedBase in ThisProject).value
): _*
)
Run Code Online (Sandbox Code Playgroud)
这个想法是unmanagedBase
根据根项目中的设置值(隐式定义的)来设置子模块。
在你的具体情况下,它会如下所示:
import sbt._
import Keys._
object RootBuild extends Build {
lazy val buildSettings = Defaults.defaultSettings ++ Seq(
scalaVersion := "2.11.1"
)
lazy val standardSettings = buildSettings ++ Seq(
libraryDependencies ++= Seq(
"org.scalatest" % "scalatest_2.11" % "2.1.6" % "test",
"org.testng" % "testng" % "6.8.8"
)
)
lazy val submoduleSettings = standardSettings ++ Seq(
unmanagedBase := (unmanagedBase in ThisProject).value
)
lazy val root = project in file(".") settings(standardSettings: _*) aggregate(core, clp)
lazy val core = project settings(submoduleSettings: _*)
lazy val clp = project settings(submoduleSettings: _*) dependsOn core
lazy val server = project settings(submoduleSettings: _*) dependsOn core
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1178 次 |
最近记录: |