设置 sbt 程序集 v0.14.2 的问题

Posted

技术标签:

【中文标题】设置 sbt 程序集 v0.14.2 的问题【英文标题】:issue with setting up sbt assembly v0.14.2 【发布时间】:2016-06-29 16:47:19 【问题描述】:

我正在使用 sbt v0.13.9 和 scala v2.11.7。我曾尝试将 sbt 程序集插件添加到 assembly.sbt 以及 plugin.sbt 但均未成功:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.2")

我尝试将 sbt 原生打包程序添加到 plugin.sbt,但我得到了同样的错误(复制如下):

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.0-RC1"

我的 build.sbt 中有以下解析器 - 我猜我需要为 sbt 程序集添加解析器(即使该站点上的文档没有提及它):

Resolver.sonatypeRepo("public"),
    Resolver.sbtPluginRepo("releases"),
    Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns),

我得到的错误如下:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.eed3si9n#sbt-assembly;0.14.2: not found
[warn]  :: com.typesafe.sbt#sbt-native-packager;1.1.0-RC1: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]      com.eed3si9n:sbt-assembly:0.14.2 (scalaVersion=2.11, sbtVersion=0.13)
[warn]      com.typesafe.sbt:sbt-native-packager:1.1.0-RC1 (scalaVersion=2.11, sbtVersion=0.13)
[warn] 
[warn]  Note: Unresolved dependencies path:
[warn]      com.eed3si9n:sbt-assembly:0.14.2 (scalaVersion=2.11, sbtVersion=0.13) (/home/test/test-server/plugins.sbt#L4-5)
[warn]        +- com.test:test-server_2.11:1.0.0
[warn]      com.typesafe.sbt:sbt-native-packager:1.1.0-RC1 (scalaVersion=2.11, sbtVersion=0.13) (/home/tets/test-server/plugins.sbt#L6-7)

我应该更改 scala 或 sbt 版本以使其正常工作吗?

【问题讨论】:

【参考方案1】:

从上面的错误消息来看,您的 plugins.sbt 似乎在您的项目根目录中——它应该在 ./project/ 子目录中(即 /home/tets/test-server/project/ )。对 sbt-assembly 的引用放在 ./project/assembly.sbt 中,对 sbt-native-packager 的引用放在 ./project/plugins.sbt 中

【讨论】:

感谢@ffxtian。我最初在我的项目子目录中有 assembly.sbt(对于 plugins.sbt 也是如此) - 它不起作用。然后我将它移动到项目根目录,结果相同。还有其他想法吗?您能否指出 github 上的一个项目,该设置实际有效(尤其是 scala v2.11.7 或更早版本)和 sbt 0.13.9 问题是我的 assembly.sbt 文件中的拼写错误。如果文件 assembly.sbt 在项目子目录中,这将起作用。

以上是关于设置 sbt 程序集 v0.14.2 的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥执行“sbt 程序集”失败并显示“不是有效的命令:程序集”?

如何通过排除集成测试来运行 sbt 程序集

如何从 sbt 的包中排除程序集?

在带有 SBT 程序集的子目录中查找主类的问题

当我们尝试在 sbt 文件中使用 cloudera 上游版本时,sbt 程序集构建失败

OutofMemoryError 使用 sbt 程序集创建胖 jar