【发布时间】:2019-11-06 01:54:13
【问题描述】:
现状
我的项目设置有点像这样:
项目:root (build.sbt, version.sbt)
子项目:projectA (build.sbt)
子项目:projectB (build.sbt)
在我的version.sbt 中,我有一个val,它可以从外部 json 文件中读取要使用的版本,如下所示:
version in ThisBuild := findVersion
lazy val findVersion: String =
parse(Source.fromFile("../buildProperties.json").mkString).map(_ \\ "version").map(_ map (_.asString)) match {
case Right(Some(x) :: _) => x
case _ => throw new IllegalArgumentException("Unable to read buildProperties.json")
}
问题
我现在需要使用这个版本来定义子项目(projectA 和 projectB)中的依赖关系。 所以我要么:
- 需要从内部访问根项目的
val findVersionprojectA & projectB 的build.sbtOR - 需要在projectA&projectB的build.sbt中直接这样使用版本:
libraryDependencies += "ext-lib" % "com.fbaierl" % version.value % Provided。但这会导致error: 'value' can only be used within a task or setting macro, such as :=, +=, ++=, Def.task, or Def.setting.异常。
有什么方法可以达到我的需要吗?
【问题讨论】:
-
把
version.sbt放到project目录下? -
但是我需要为每个子项目复制它,对吗?
-
你也许是对的。我通常在 Play 文档中将多项目作为推荐来处理。 - 在这里查看我的答案:stackoverflow.com/a/56286492/2750966
-
这是可能的,但我不希望在根项目中定义子项目的所有依赖项,因为那样我觉得我会失去很多我得到的模块化多项目解决方案。
标签: scala sbt multi-project