Scala 如何在SBT多项目中共享自定义任务
我有一个项目作为SBT多版本建立。看起来是这样的:Scala 如何在SBT多项目中共享自定义任务,scala,sbt,Scala,Sbt,我有一个项目作为SBT多版本建立。看起来是这样的: - project Dependencies.scala - core build.sbt - server build.sbt build.sbt 我想使用Dependencies.scala作为子项目之间共享的库版本号的容器 sealed trait Dependencies { val commonsIo = "2.4" } object DependencyVersions extends Dependenci
- project
Dependencies.scala
- core
build.sbt
- server
build.sbt
build.sbt
我想使用Dependencies.scala
作为子项目之间共享的库版本号的容器
sealed trait Dependencies {
val commonsIo = "2.4"
}
object DependencyVersions extends Dependencies
在root build.sbt中,我添加了一个设置
,该设置提供给每个子项目
lazy val dependencies = settingKey[Dependencies]("versions")
val defaultSettings = Defaults.coreDefaultSettings ++ Seq(
dependencies := DependencyVersions)
def projectFolder(name: String, theSettings: Seq[Def.Setting[_]] = Nil) = Project(name, file(name), settings = theSettings)
lazy val core = projectFolder("core", defaultSettings)
我无法访问core/build.sbt
中的依赖项设置
"commons-io" % "commons-io" % dependencies.value.commonsIo, <-- doesn't work
“commons io”%“commons io”%dependencies.value.commonsIo,您可以在对象common extensed AutoPlugin
(在项目/common.scala
中)中定义公共设置(依赖项),然后在子项目描述符上使用.enablePlugin(common)
.谢谢@cchantep使用下面的AutoPlugin
让它现在可以工作了
import sbt._
sealed trait Dependencies {
val commonsIo = "2.4"
}
object DependencyVersions extends Dependencies
object DependencyVersionsPlugin extends AutoPlugin {
override def trigger = allRequirements
object autoImport {
lazy val dependencies = settingKey[Dependencies]("Bundles dependency versions")
}
import autoImport._
override def projectSettings = Seq(
dependencies := DependencyVersions
)
}