【问题标题】:What is the difference between "container" and "provided" in SBT dependencies?SBT 依赖项中的“容器”和“提供”有什么区别?
【发布时间】:2016-11-13 14:10:53
【问题描述】:

在阅读许多 Web 应用程序的 build.sbt 时,经常可以看到标记为 "provided" 的依赖项,例如,请参阅sbt-assembly documentation:

"org.apache.spark" %% "spark-core" % "0.8.0-incubating" % "提供"

我在 SBT 文档中找不到任何提及,但是 Maven documentation 说以下关于提供的内容:

  • 提供

这很像编译,但表示您希望 JDK 或容器在运行时提供依赖项

但有时我也看到"container" 处于相同位置,例如this build.sbt。这是一样的吗?

val tomcatVersion = "7.0.53"

libraryDependencies ++= Seq(
  "org.apache.tomcat.embed" % "tomcat-embed-core"         % tomcatVersion % "container",
  "org.apache.tomcat.embed" % "tomcat-embed-logging-juli" % tomcatVersion % "container",
  "org.apache.tomcat.embed" % "tomcat-embed-jasper"       % tomcatVersion % "container",
  "org.apache.tomcat" % "tomcat-catalina" % tomcatVersion % "provided",
  "org.apache.tomcat" % "tomcat-coyote"   % tomcatVersion % "provided"
)

【问题讨论】:

    标签: scala sbt xsbt-web-plugin


    【解决方案1】:

    依赖项的第四个元素将依赖项与一个配置相关联;建立configuration dependency。它源自ivysbt 在内部使用。

    “容器”配置定义为 xsbt-web-plugin version 0.9,它被引入你引用的项目here。 它用于为sbt container:start 建立容器/托管运行时。

    顺便说一句 - 运行时必须提供与 “提供”配置对应的运行时库,这些运行时库在编译阶段使用,但不包含在生成的工件的传递依赖项中。

    【讨论】:

      猜你喜欢
      • 2015-11-11
      • 2014-12-09
      • 2015-11-13
      • 2013-05-22
      • 1970-01-01
      • 2019-08-06
      • 2020-02-23
      • 2012-06-30
      相关资源
      最近更新 更多