【问题标题】:sbt multi project undefined settingssbt 多项目未定义设置
【发布时间】:2016-03-11 02:06:37
【问题描述】:

我在 SBT 中有一个多项目设置。在我们的构建过程中,项目中有一个文件由我们的 CI 自动更新。它包含应用程序版本。

但是,每当我尝试加载应用设置时,都会收到类似于以下内容的错误:

[error] References to undefined settings: 
[error] 
[error]   module1/*:appProperties from module1/*:version (/Users/jespeno/workspace/multi-module/build.sbt:10)
[error] 
[error]   module2/*:appProperties from module2/*:version (/Users/jespeno/workspace/multi-module/build.sbt:10)

这是我的sbt 文件的样子:

val appProperties = settingKey[Properties]("app version")

appProperties := {
  val prop = new Properties()
  IO.load(prop, new File("version.properties"))
  prop
}

val commonSettings = Seq(
  version := appProperties.value.getProperty("project.version"),
  scalaVersion := "2.11.7"
)

lazy val root = (project in file(".")).settings(commonSettings: _*)
  .aggregate(module1, module2)
  .settings(
    name := appProperties.value.getProperty("project.name")
  )

lazy val module1 = (project in file("./modules/module1"))
  .settings(commonSettings: _*)
  .settings(
    name := "module1"
  )

lazy val module2 = (project in file("./modules/module2"))
  .settings(commonSettings: _*)
  .settings(
    name := "module2"
  )

这是我的version.properties

project.name="multi-module"
project.version="0.0.1"

有趣的是,根项目能够正确加载设置:如果我删除子模块,构建会正确启动。我使用的是 SBT 版本0.13.8

【问题讨论】:

    标签: scala sbt multi-module


    【解决方案1】:

    这是由于appProperties对子模块不可见(module1module2),您可以将其更改为:

    appProperties in Global := {
      val prop = new Properties()
      IO.load(prop, new File("version.properties"))
      prop
    }
    

    sbt scopes

    【讨论】:

      猜你喜欢
      • 2016-09-20
      • 2021-05-11
      • 2018-08-21
      • 2014-06-05
      • 2016-01-29
      • 2013-12-05
      • 1970-01-01
      • 2015-02-26
      • 2020-10-22
      相关资源
      最近更新 更多