问题标签 [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.
scala - 解决 sbt 中的 jar 加载冲突
当两个特定的 sbt 插件一起添加到其构建定义中的项目时,我在 sbt 启动时收到以下错误。这些 sbt 插件之一是scalikejdbc,另一个是我自己的,显然它们在项目的构建定义中相互包含会导致 sbt 启动时出现此错误:
显然,看起来每个插件都带来了不同版本的scala.reflect.macros ,从而导致了这个错误。我可以在 sbt 插件的罐子里戳,确实其中一个似乎带来了scala/reflect/macros/blackbox.class
―</p>
― 然而,很难肯定地断定在这个早期启动阶段 sbt 加载了什么,以便确定这里涉及到这个包的哪些版本以及哪些依赖项带来了它们。
感谢您就如何进行此调查提出建议!
只是为了完整起见——我只在下面列出了 sbt 给出的完整错误——但我真诚地怀疑它会添加任何信息,所以你可能会忽略它。
scala - 在 Scala 中捆绑导入
在我的 Scala 项目中,我几乎所有的文件都有这些导入:
在 Scala 中干燥这个的最好方法是什么?我可以为我的项目(使用某种 sbt 插件?)或在包级别指定所有这些吗?
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.bintrayRepo
但Resolver.bintrayIvyRepo
没有成功。
我会遗漏一些东西,但我不得不承认我感到有点失落。那么应该对齐上传和下载路径的缺失配置是什么?
细节 :
publishMavenStyle := false
-> me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/jars/sbt-plugin.jarpublishMavenStyle := true
-> me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/jars/sbt-plugin.jarResolver.bintrayRepo
->我/我的/app/sbt-plugin_2.10_0.13/0.1.0/sbt-plugin-0.1.0.pomResolver.bintrayIvyRepo
-> me.my.app/sbt-plugin/scala_2.10/sbt_0.13/0.1.0/ivys/ivy.xml
scala - 使用 sbt-scripted 测试时,依赖于另一个插件的 Sbt 插件会引发 RuntimeException
我正在尝试使用 sbt-scripted 测试一个 sbt-plugin (以下称为MyPlugin),但由于此错误,它一直给我一个 java.lang.RuntimeException (插件正确编译)(完整要点请参见此处):
MyPlugin 依赖于sbteclipse(我需要以编程方式执行“eclipse” Command
),如MyPlugin/build.sbt
文件最后一行所述:
我的AutoPlugin
子类覆盖trigger
和requires
签名如下:
我设置了一个简单的 sbt 脚本测试,但它抛出了java.lang.RuntimeException
上述内容。我不明白为什么。
这是 sbt 脚本配置:
测试/构建.sbt
测试/项目/plugins.sbt
我错过了什么?
谢谢!
scala - ThisBuild 忽略插件设置键
这个问题与我的烦恼有关,sbt-scapegoat
但我想在全球范围内了解这件事。
因此,sbt-scapegoat
定义了一个设置scapegoatVersion
和配置scapegoat
。此处提供简短而完整的源代码。
当我设置scapegoatVersion in ThisBuild := "1.3.0"
它被忽略:
我理解是这样,因为scapegoatVersion := "1.0.0"
从autoImport
对象中为每个项目导入,并且这样的设置比scapegoatVersion in ThisBuild
覆盖它更精确。
我的问题是:如何在插件中定义这样的默认值以允许使用ThisBuild
or进行全局覆盖Global
。
@edit:
我发现version
设置 iDefaults.scala
是使用:==
而不是:=
. 这是我要找的把戏吗?遗憾的是,它没有记录在案,而且它是私有的sbt
。
scala - 如果在 SBT 中使用 SNAPSHOT 依赖项,是否可以拒绝发布?
我不小心发布了仍然引用内部 SNAPSHOT 的内部项目,但如果您依赖任何 SNAPSHOT 依赖项,如果有一个无法发布的 SBT 插件,这将非常有帮助。有人知道 SBT 中有这样的插件或功能吗?
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 次,我会很高兴。
有人可以解释我如何使用正确image
或image
正确的方式,或者我如何缓存这些sbt
东西吗?
更新
在过去的几天里,我与docker
和进行了很多战斗gitlab ci
。我发现这个问题与不要下载互联网中描述的几乎相同 。拥有所有依赖项似乎是一项艰巨的任务,最好通过挂载它们来完成。不幸的是,这在共享的 gitlab ci 运行器上是不可能的。
我继续发现sbt-docker,它允许您从build.sbt
文件构建 docker 容器。使用package basic 方法,我尝试将项目的所有本地可用依赖项作为全局 sbt plugins包含到容器中。但这也无济于事。
maven
我最后的发现是关于解决方案的答案,并试图将其转化为我们的sbt
项目:
.gitlab-ci.yml
我可以gitlab ci
再次访问日志。它们看起来基本上如下:
我想摆脱所有的下载。
sbt - How to configure sonatype nexus to allow sbt plugins?
When publishing our plugin we got this
We set up the plugin using