sbt多项目未定义的设置(sbt multi project undefined settings)

编程入门 行业动态 更新时间:2024-10-26 22:28:44
sbt多项目未定义的设置(sbt multi project undefined settings)

我在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 。

I have a multi project setup in SBT. In our build process there's a file in the project that is automatically updated by our CI. It contains the app version.

However, whenever I try to load the app settings, I get an error similar to the following:

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

This is what my sbt file looks like:

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

Here's my version.properties:

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

The interesting thing is, the root project is able to load the settings correctly: if I remove the sub-modules, the build starts correctly. I'm using SBT version 0.13.8.

最满意答案

这是由appProperties模块( module1 , module2 )不可见引起的,您可以将其更改为:

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

sbt范围

This is caused by appProperties not being visible to submodules(module1, module2), you can change it to:

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

sbt scopes

更多推荐

本文发布于:2023-08-07 05:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1460699.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多项   未定义   sbt   multi   settings

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!