问题标签 [sbt-assembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5486 浏览

scala - sbt 组装安装

我正在尝试使用 sbt-assembly,但无法安装它。

我从自述文件中逐字添加了 project/plugins.sbt 和依赖项:

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

然后我添加了一个 build.sbt 文件,其中包含自述文件所说的内容:

import AssemblyKeys._ // 把它放在文件的顶部

装配设置

启动 sbt 时出现此错误:

[错误] /Users/me/git/stest/project/Build.scala:29: not found: value assemblySettings [error] .settings(assemblySettings: _*) [error] ^ [error] 发现一个错误 [error] ( compile:compile) 编译失败

我回去尝试了另一个我在另一个 stackoverflow 帖子中看到的替代方法:

序列(装配设置:_*)

同样的问题。有任何想法吗?(斯卡拉 2.10.0)

0 投票
3 回答
5059 浏览

scala - Scalatra servlet 的独立部署

我实现了一个 Scalatra servlet,现在想创建一个可执行 jar,就像本教程中描述的那样:http ://www.scalatra.org/2.2/guides/deployment/standalone.html

我使用 IntelliJ IDEA 和 Scala 插件进行开发,使用 sbt 构建和运行我的 servlet(我使用 sbt-idea 生成项目文件)。我的问题是,当我尝试编译我的项目时,找不到教程中的 JettyLauncher 使用的码头包。

更新:使用马特的回答,我能够编译和运行 JettyLauncher。但是,我仍然对 sbt-assembly ( https://github.com/sbt/sbt-assembly ) 有问题。我按照自述文件中的说明进行操作,但在尝试执行组装任务时出现以下错误:

更新 2:感谢马特,我现在有了一个可以工作的 build.scala,我可以使用组装任务生成一个可执行的 jar。但是,sbt-assembly 不会将 /src/main/webapp 的内容添加到 jar 中。我使用这个文件夹来存储我的 HTML、CSS 和 JavaScript 文件。如果 Scalatra 无法匹配路由,它会提供这些文件,这在使用 container:start 运行 servlet 时有效。此外,我将服务器需要的一些文件存储在 /src/main/webapp/WEB-INF 中。这些文件也不会添加到 jar 中。

我的 build.scala 看起来像这样:

提前致谢!

0 投票
2 回答
751 浏览

plugins - 依赖项中的 sbt-assembly 和多个类定义

作为 sbt 和 sbt-assembly 插件的新手,我对如何处理涉及我试图打包的依赖项中不同类定义的构建感到困惑。

我已经添加:

到我的 build.sbt 文件,但我仍然收到上面的错误(无论它是否在构建文件中)。任何指导将不胜感激。

谢谢,

大学教师

0 投票
1 回答
930 浏览

scala - 将外部参数传递给 sbt jar(通过 sbt-assembly 创建)

我创建了一个基于https://github.com/sbt/sbt-assembly的程序集 jar 项目,并希望在外部加载“logback.xml”和“application.conf”,这会覆盖 fatjar 中打包的默认文件。

与此类似的东西

非常类似于 play 提供的http://www.playframework.com/documentation/2.0/SettingsLogger

这可以做到吗?如果可以,怎么做?

0 投票
2 回答
3431 浏览

scala - sbt-assembly:如何将依赖项 jar 与主 jar 链接?

我在 scala 中编码并使用带有sbt-assembly插件的 SBT。我的项目有很多外部库,因此 sbt-assembly 需要很长时间来打包 JAR 文件。我想为我的代码和依赖项创建一个单独的 jar 文件。因此,我可以简单地重新编译和重新打包我的代码。这该怎么做?

目前进展:

以下命令build.sbt可防止 sbt-assembly 打包库:

assembleArtifact in packageScala := false

assembleArtifact in packageDependency := false

然后可以通过传递以下命令来构建单独的 jar assemblyassembly-package-scalaassembly-package-dependency. 他们制作了三个罐子:一个包含我的程序,一个包含 scala 库,一个包含所有依赖项。

但是,jar 文件不再可执行,因为它在单独的 jar 文件中看不到依赖项。我想我需要向 assembly-sbt 添加一个类路径,但我不知道该怎么做。

0 投票
2 回答
2005 浏览

scala - 使用 sbt 程序集的 akka + 播放依赖问题

我正在使用 sbt 程序集来尝试获取我们的应用程序并创建“一个大 jar”来部署它。

我遇到了 Play 2.1.2 依赖于 scala-stm 0.6 而 akka-transactor 2.1.4 依赖于 scala-stm 0.7 的问题。

我能够毫无问题地在 SBT 中运行该应用程序(以及 Eclipse 和 IntelliJ)

我不清楚如何使用“sbt assembly”解决这个问题

这是一些输出,准确地解释了我所看到的(剪掉了一些东西):

如果我查看依赖关系树,我会看到两个具有冲突依赖关系的东西(删除了一堆东西):

关于如何解决这个依赖问题的任何建议?

========================= 编辑:添加更简单的示例 =================== ====

我决定尝试使用 Play 和 Akka 创建一个非常简单的应用程序。但是,我试图“组装”一个简单的 Play 应用程序并且遇到了问题。

这是我的项目/plugins.sbt 文件:

这是我的项目/Build.scala 文件:

这是我从“程序集”得到的输出

我仍然不清楚如何解决这个问题。我怀疑如果我可以解决这个简单的测试问题,那么我可以解决 Akka + Play 问题。

=================== 编辑:完成同一件事的不同方式=================

我发现了一个“神奇”的 sbt 命令。'分布'。这会将应用程序打包在一个 .zip 文件中,然后可以将其解压缩并在任何安装了 java 的机器上运行。

这是我们在 Coursera 上找到的花絮的博客文章:

http://betacs.pro/blog/2013/08/03/deploying-play-apps/

更多信息可以在这里找到:

http://www.playframework.com/documentation/2.1.x/ProductionDist

0 投票
1 回答
1780 浏览

scala - 抑制 sbt-assembly 中的主类

在多项目 SBT 构建中,应该如何显式抑制 SBT-assembly 中的 mainClass 属性?

我进行了广泛的搜索,但似乎无法找到如何防止在多项目构建中由 sbt-assembly 构建的 jar 中设置主类。

在单项目构建中,只要至少有两个类可能被命令行调用,这似乎就可以工作:

但是,似乎mainClass := None甚至没有必要。事实上,即使它留在那里,如果只有一个候选类,清单中仍然会设置一个主类。

不幸的是,在多项目构建中,即使包含一个附加类作为虚拟入口点,我也无法阻止设置主类。

经过大量的摆弄,我发现我可以通过在多个范围内独立设置mainClass来防止设置主类。None特别是,这可以解决问题:

我在文档中找不到此要求,也无法弄清楚为什么这是必要的。设置mainClass in (Compile, run) := None不起作用。它们确实需要单独确定范围。

这是手动抑制主类的正确方法还是我错过了什么?如果不是错误,我认为这应该记录在某个地方,特别是考虑到单项目和多项目构建之间的行为不一致。

0 投票
1 回答
357 浏览

scala - Scalatra 独立可部署无法创建程序集

当我按照 Scalatra 文档(http://www.scalatra.org/2.2/guides/deployment/standalone.html)的指示运行“程序集”命令时,出现以下错误:

这是什么意思,如何解决?

这是我的构建文件,合并策略设置为第一个:

0 投票
2 回答
7244 浏览

scala - 什么是 SBT 中的分类器

这个词是什么意思classifiers?它来自罐子吗?例如在sbt-assembly插件中:

0 投票
1 回答
566 浏览

scala - 如何从发布中删除工件

对于发布,我使用的是 sbt-assembly,但问题是publish它发布了所有我不需要的工件,我只是用组装任务生成的那个。如何从packagedArtifacts设置中删除伪影?