问题标签 [sbt-plugin]

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 回答
288 浏览

jenkins - Jenkins 中的 SBT 插件创建空的胖罐

我们使用 SBT 插件获得了“成功”的构建,但胖 .jar 文件几乎缺少所有依赖项。与 Intellij 中的本地构建相比,该日志看起来是正确的。

.jar 的文件大小接近正确的构建,所以我们没有立即注意到问题,但显然校验和是错误的。

詹金斯罐子:

这是詹金斯的结果

Intellij 中的本地构建:

这是一个很好的构建

部分日志:

如果作业无法到达 Maven 存储库,我预计会出现某种超时或失败。我们在这些服务器上运行作业,这些作业通过 http 引入 npm 依赖项。

0 投票
1 回答
205 浏览

apache-spark - 了解 spark-sbt-plugin

我遇到了有关如何设置build.sbtSpark 的详细说明。

但后来我读到了Spark 包的 SBT 插件,其中显然只有一行

没关系,因为插件正在做讨厌的工作。

这种理解正确吗?

0 投票
1 回答
1306 浏览

scala - 解决 sbt 中的 jar 加载冲突

当两个特定的 sbt 插件一起添加到其构建定义中的项目时,我在 sbt 启动时收到以下错误。这些 sbt 插件之一是scalikejdbc,另一个是我自己的,显然它们在项目的构建定义中相互包含会导致 sbt 启动时出现此错误:

显然,看起来每个插件都带来了不同版本的scala.reflect.macros ,从而导致了这个错误。我可以在 sbt 插件的罐子里戳,确实其中一个似乎带来了scala/reflect/macros/blackbox.class―</p>

― 然而,很难肯定地断定在这个早期启动阶段 sbt 加载了什么,以便确定这里涉及到这个包的哪些版本以及哪些依赖项带来了它们。

感谢您就如何进行此调查提出建议!


只是为了完整起见——我只在下面列出了 sbt 给出的完整错误——但我真诚地怀疑它会添加任何信息,所以你可能会忽略它。

0 投票
2 回答
657 浏览

scala - 在 Scala 中捆绑导入

在我的 Scala 项目中,我几乎所有的文件都有这些导入:

在 Scala 中干燥这个的最好方法是什么?我可以为我的项目(使用某种 sbt 插件?)或在包级别指定所有这些吗?

0 投票
1 回答
254 浏览

sbt - Sbt 插件在 bintray 上的发布和解析,不同的路径(sbt-bintray 插件)

我在发布/使用来自 bintray 的自定义 sbt 插件时遇到了一些麻烦。我可以sbt-plugin在 bintray 上发布,但是当我尝试使用它时,解析器会使用另一条路径。

我已按照官方指南进行了调整,但已将其调整为最新版本的插件,我将其build.sbt放入我的插件中:

sbt-plugin> publish任务成功完成并将我的插件发布 到me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/jars/sbt-plugin.jar

然后我添加并addSbtPlugin("me.my.app" % "sbt-plugin" % "0.1.0")重新my-project\project\plugins.sbt加载它。但他失败了

如您所见,用于下载插件的 URL 与发布插件的 URL 不同。(与publishLocal我的插件在同一路径下发布但成功解决。

  • 当地的 :me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/jars/sbt-plugin.jar
  • 上传:me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/jars/sbt-plugin.jar
  • 下载:me/my/app/sbt-plugin_2.10_0.13/0.1.0/sbt-plugin-0.1.0.pom

我试过有或没有publishMavenStyle := false,有Resolver.bintrayRepoResolver.bintrayIvyRepo没有成功。

我会遗漏一些东西,但我不得不承认我感到有点失落。那么应该对齐上传下载路径的缺失配置是什么?

细节 :

  • publishMavenStyle := false-> me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/jars/sbt-plugin.jar
  • publishMavenStyle := true -> me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/jars/sbt-plugin.jar

  • Resolver.bintrayRepo->我/我的/app/sbt-plugin_2.10_0.13/0.1.0/sbt-plugin-0.1.0.pom

  • Resolver.bintrayIvyRepo-> me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/ivys/ivy.xml
0 投票
0 回答
174 浏览

scala - 使用 sbt-scripted 测试时,依赖于另一个插件的 Sbt 插件会引发 RuntimeException

我正在尝试使用 sbt-scripted 测试一个 sbt-plugin (以下称为MyPlugin),但由于此错误,它一直给我一个 java.lang.RuntimeException (插件正确编译)(完整要点请参见此处):

MyPlugin 依赖于sbteclipse(我需要以编程方式执行“eclipse” Command),如MyPlugin/build.sbt文件最后一行所述:

我的AutoPlugin子类覆盖triggerrequires签名如下:

我设置了一个简单的 sbt 脚本测试,但它抛出了java.lang.RuntimeException上述内容。我不明白为什么。

这是 sbt 脚本配置:

测试/构建.sbt

测试/项目/plugins.sbt

我错过了什么?

谢谢!

0 投票
1 回答
81 浏览

scala - ThisBuild 忽略插件设置键

这个问题与我的烦恼有关,sbt-scapegoat但我想在全球范围内了解这件事。

因此,sbt-scapegoat定义了一个设置scapegoatVersion和配置scapegoat此处提供简短而完整的源代码。

当我设置scapegoatVersion in ThisBuild := "1.3.0"它被忽略:

我理解是这样,因为scapegoatVersion := "1.0.0"autoImport对象中为每个项目导入,并且这样的设置比scapegoatVersion in ThisBuild覆盖它更精确。

我的问题是:如何在插件中定义这样的默认值以允许使用ThisBuildor进行全局覆盖Global

@edit: 我发现version设置 iDefaults.scala是使用:==而不是:=. 这是我要找的把戏吗?遗憾的是,它没有记录在案,而且它是私有的sbt

0 投票
2 回答
509 浏览

scala - 如果在 SBT 中使用 SNAPSHOT 依赖项,是否可以拒绝发布?

我不小心发布了仍然引用内部 SNAPSHOT 的内部项目,但如果您依赖任何 SNAPSHOT 依赖项,如果有一个无法发布的 SBT 插件,这将非常有帮助。有人知道 SBT 中有这样的插件或功能吗?

0 投票
2 回答
8138 浏览

scala - 如何防止gitlab ci每次都下载sbt?

我们有一个play2/scala使用 gitlab ci 构建的应用程序。

我们的.gitlab-ci.yml(至少是重要的部分)如下所示:

build.sh

不幸的是,我们的管道在所有步骤(构建、验证、部署)中总是运行大约 30-40 分钟。大部分时间它都花在sbt一遍又一遍地下载真正令人讨厌的东西上。

我可能不太了解,gitlab ci runners但据我了解,通过使用hseeberger/scala-sbt作为图像,sbt应该是全球可用的,应该不需要下载它。

然后也不需要 gitlab 的这个解决方案。

sbt无论如何,如果在每次部署期间服务器运行任何sbt命令时不会完全下载 6 次,我会很高兴。

有人可以解释我如何使用正确imageimage正确的方式,或者我如何缓存这些sbt东西吗?

更新

在过去的几天里,我与docker和进行了很多战斗gitlab ci我发现这个问题与不要下载互联网中描述的几乎相同 。拥有所有依赖项似乎是一项艰巨的任务,最好通过挂载它们来完成。不幸的是,这在共享的 gitlab ci 运行器上是不可能的。

我继续发现sbt-docker,它允许您从build.sbt文件构建 docker 容器。使用package basic 方法,我尝试将项目的所有本地可用依赖项作为全局 sbt plugins包含到容器中。但这也无济于事。

maven我最后的发现是关于解决方案的答案,并试图将其转化为我们的sbt项目:

.gitlab-ci.yml

我可以gitlab ci再次访问日志。它们看起来基本上如下:

我想摆脱所有的下载

0 投票
1 回答
974 浏览

sbt - How to configure sonatype nexus to allow sbt plugins?

When publishing our plugin we got this

We set up the plugin using