首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sbt多项目未定义设置

sbt多项目未定义设置
EN

Stack Overflow用户
提问于 2016-03-11 02:06:37
回答 1查看 491关注 0票数 2

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

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

代码语言:javascript
复制
[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文件的样子:

代码语言:javascript
复制
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

代码语言:javascript
复制
project.name="multi-module"
project.version="0.0.1"

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-11 04:14:32

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

代码语言:javascript
复制
appProperties in Global := {
  val prop = new Properties()
  IO.load(prop, new File("version.properties"))
  prop
}

sbt范围

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35930969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档