Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在SBT多项目中共享自定义任务_Scala_Sbt - Fatal编程技术网

Scala 如何在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

我有一个项目作为SBT多版本建立。看起来是这样的:

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