使用 sbt-native-packager 澄清 dockerExposedPorts 的范围委托
Clarification on scope delegation of dockerExposedPorts with sbt-native-packager
我正在使用 Scala Play 自带的 sbt-native-packager 插件:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
我想知道为什么 root
项目在使用时没有设置 dockerExposedPorts
设置:
name := """scala-play-react-seed"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file("."))
.enablePlugins(PlayScala)
.settings(
Docker / dockerExposedPorts := Seq(9000), // <-- 1. doesn't work
)
Docker / dockerExposedPorts := Seq(9000), // <-- 2. also doesn't work
$ sbt show root/dockerExposedPorts
[info] *
但是,如果我删除 Docker
配置部分,它会起作用:
.settings(
dockerExposedPorts := Seq(9000), // <-- 3. works
)
$ sbt show root/dockerExposedPorts
[info] * 9000
据我了解 sbt 的 scope delegation,案例 1. 的范围为 root / Docker / Zero / dockerExposedPorts
,这应该比案例 3. root / Zero / Zero / dockerExposedPorts
更具体。我在这里错过了什么?
是的,Docker / dockerExposedPorts
比 Zero / dockerExposedPorts
更具体。但与您似乎假设的不同,它是更具体的范围委托给不太具体的范围,而不是相反。手册是这样说的:
This feature allows you to set a value once in a more general scope, allowing multiple more-specific scopes to inherit the value.
事实上,这是唯一可能的方式,因为您可以定义 e。 G。 Docker / dockerExposedPorts
和 Universal / dockerExposedPorts
。 Zero / dockerExposedPorts
会委派给其中哪一个?对此没有合理的答案,因此授权朝另一个方向发展。
我正在使用 Scala Play 自带的 sbt-native-packager 插件:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8")
我想知道为什么 root
项目在使用时没有设置 dockerExposedPorts
设置:
name := """scala-play-react-seed"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file("."))
.enablePlugins(PlayScala)
.settings(
Docker / dockerExposedPorts := Seq(9000), // <-- 1. doesn't work
)
Docker / dockerExposedPorts := Seq(9000), // <-- 2. also doesn't work
$ sbt show root/dockerExposedPorts
[info] *
但是,如果我删除 Docker
配置部分,它会起作用:
.settings(
dockerExposedPorts := Seq(9000), // <-- 3. works
)
$ sbt show root/dockerExposedPorts
[info] * 9000
据我了解 sbt 的 scope delegation,案例 1. 的范围为 root / Docker / Zero / dockerExposedPorts
,这应该比案例 3. root / Zero / Zero / dockerExposedPorts
更具体。我在这里错过了什么?
是的,Docker / dockerExposedPorts
比 Zero / dockerExposedPorts
更具体。但与您似乎假设的不同,它是更具体的范围委托给不太具体的范围,而不是相反。手册是这样说的:
This feature allows you to set a value once in a more general scope, allowing multiple more-specific scopes to inherit the value.
事实上,这是唯一可能的方式,因为您可以定义 e。 G。 Docker / dockerExposedPorts
和 Universal / dockerExposedPorts
。 Zero / dockerExposedPorts
会委派给其中哪一个?对此没有合理的答案,因此授权朝另一个方向发展。