为什么SBT项目被声明为惰性VAL?
根据“通过声明project类型的惰性val来定义项目。” 这当然是正常的,也是我们正在做的,但我想知道,如果有的话,它需要懒惰的原因是什么 使用常规的为什么SBT项目被声明为惰性VAL?,sbt,Sbt,根据“通过声明project类型的惰性val来定义项目。” 这当然是正常的,也是我们正在做的,但我想知道,如果有的话,它需要懒惰的原因是什么 使用常规的val而不是lazy val似乎有效。当然,使用严格的VAL会导致项目定义按顺序初始化,这意味着正向引用不起作用,需要按依赖顺序定义项目 对于一个相对较大的构建,有53个相互依赖的项目,执行订单实际上是一件好事™, 所以我想知道,除了允许定义以任意顺序出现之外,使用lazy val是否还有实际原因。这是一种常见的“最佳实践”。我还没有看到任何人明
val
而不是lazy val
似乎有效。当然,使用严格的VAL会导致项目定义按顺序初始化,这意味着正向引用不起作用,需要按依赖顺序定义项目
对于一个相对较大的构建,有53个相互依赖的项目,执行订单实际上是一件好事™, 所以我想知道,除了允许定义以任意顺序出现之外,使用lazy val是否还有实际原因。这是一种常见的“最佳实践”。我还没有看到任何人明确指出这一点,但根据我的经验,这种做法与sbt的一些特性有关
*.sbt
文件*.sbt
文件build.sbt
。我们有一些常用设置和3个项目(一个根目录和两个版本)
sbt不会启动,因为在此构建中有多个错误。sbt
api
和server
模块在定义之前在root
项目中引用commonSettings
在所有项目中的定义之前被引用都变得懒惰
,重构构建文件就会变得困难。这就是所有sbt文档每年使用lazy val
s的原因。避免第一次使用的用户感到困惑和沮丧
希望有帮助,
Muki如果我错了,请纠正我。因此,
lazy val
用法的主要思想是允许对声明进行重新排序,对吗?
val root = project.in(file("."))
.settings(commonSettings)
.aggregate(api, server)
val api = project.in(file("api"))
.settings(commonSettings)
.settings(name := "server")
val server= project.in(file("api"))
.settings(commonSettings)
.settings(name := "api")
.dependsOn(api)
val commonSettings = Seq(organization := "com.example")