【问题标题】:Sbt-assembly unresolved dependency, ScalaSbt-assembly 未解决的依赖,Scala
【发布时间】:2015-12-19 15:17:49
【问题描述】:

我正在安装 Sbt-Assembly,但现在卡住了。

Sbt Version (from 'sbt about'): 0.13.8
Current project is built against scala 2.11.6
Sbt, sbt plugins, and build definitions are using Scala 2.10.4

project/assembly.sbt

   addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.0")
   resolvers += Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)

build.sbt

   scalaVersion in ThisBuild := "2.11.6"

~/.sbt/0.13/global.sbt

   scalaVersion := "2.11.6"

我意识到 sbt-assembly 适用于 scala 2.10。如果我将我的项目更改为 scala 2.10,我有 2.10 的新不可用依赖项,这是不可取的。有没有办法将我的项目配置为仅将 2.10 用于程序集插件?

  ==== bintray-sbt-plugins: tried
  http://dl.bintray.com/sbt/sbt-plugin-releases/com.eed3si9n/sbt-assembly/scala_2.11/sbt_0.13/0.14.0/ivys/ivy.xml

  ::::::::::::::::::::::::::::::::::::::::::::::
  ::          UNRESOLVED DEPENDENCIES         ::
  ::::::::::::::::::::::::::::::::::::::::::::::
  :: com.eed3si9n#sbt-assembly;0.14.0: not found
  ::::::::::::::::::::::::::::::::::::::::::::::

  Note: Some unresolved dependencies have extra attributes.  
  Check that these dependencies exist with the requested attributes.

      com.eed3si9n:sbt-assembly:0.14.0 (scalaVersion=2.11, sbtVersion=0.13)

【问题讨论】:

    标签: scala plugins sbt sbt-assembly


    【解决方案1】:

    只需从global.sbt 中删除scalaVersion

    因为SBT is recursive 它在构建您的构建文件时使用来自global.sbtscalaVersion,这会失败,因为SBT 0.13 是使用Scala 2.10 构建的,所有SBT 插件也是如此。

    【讨论】:

    • 这很烦人,尤其是因为 SBT 看起来不会很快(n 年后)针对 Scala 2.11+ 构建。我不完全清楚为什么定义要用于由元构建构建的工件的 Scala 版本应该定义 sbt 运行该构建所需的版本。双重烦人,因为这在文档中明确。
    • 反之亦然:元构建需要使用 SBT 库。 Scala 2.11 将在 SBT 1.0 中使用(不出所料,它不能在次要版本中更改)。
    • 很容易看出 SBT 1.0 将使用 Scala 2.11:但时间线仍未定义,这是一个痛点。不过我很好奇:我认为我遇到麻烦的原因是我的元构建在它指定的scalaVersion 上构建了一个正确的构建定义,而我的正确构建无法运行,因为 SBT 没有与那?一旦我停止在我的元构建中指定一个版本,我的正确构建就起作用了(假设我在我的元构建中硬编码了库依赖项)。 (我已经为此奋斗了一周。:P)
    • 不,带有错误scalaVersion 的元构建根本不应该构建构建定义(至少我认为是这样)。
    • 嗯。我认为我所看到的是构建定义已构建但由于在查找库依赖项时属性混淆而死亡。但这可能是讨论它的错误地方。
    【解决方案2】:

    我遇到了类似的问题,将addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3") 添加到项目根目录中的project/plugins.sbt 而不是plugins.sbt 很有帮助。

    【讨论】:

    • 感谢@wmiel 的提示
    【解决方案3】:

    我遇到了类似的错误。更改 sbt-assembly 版本(从 0.14.3 到 0.14.5)有效。我的 sbt 版本是 1.0.3,我使用了: addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")

    【讨论】:

      【解决方案4】:

      只是不要使用 sbt-assembly! :) Flat-jars 在合并过程中会导致冲突,需要使用 assemblyMergeStrategy 解决。 使用 sbt 提供的 二进制分发 格式插件,它使您能够以二进制脚本、dmg、msi 和 tar.gz 进行分发。

      查看sbt-native-packager

      【讨论】:

        猜你喜欢
        • 2017-06-13
        • 2014-12-17
        • 2018-06-18
        • 2013-02-12
        • 2015-12-13
        • 2015-04-04
        • 1970-01-01
        • 1970-01-01
        • 2013-12-08
        相关资源
        最近更新 更多