问题标签 [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.
sbt - 在元构建级别运行 sbt 命令
sbt 允许我们在根项目级别运行 sbt 命令。
如何在元构建级别运行命令?(在root/project/project
目录中定义)
我的用例是我的一些 sbt 插件具有相同依赖项的不同版本,并且旧的依赖项被逐出。我想使用 sbt-dependency-graph 进行调查
sbt - SBT 中 API 文档的版本控制
我可以使用sbt-ghpages插件发布 API 文档。但是插件的文档并没有解释如何为每个版本维护多个版本的 API 文档。如何使用sbt-ghpages或任何其他替代方案(如果有)来做到这一点。
scala - Scala:IntelliJ 以红色突出显示正确的代码
美好的一天IntelliJ
开始用红色突出显示我的工作Scala
代码。虽然以下命令运行顺利,但IntelliJ
认为代码充满了错误并且缺少很多dependencies
.
sbt clean
sbt reload
sbt update
sbt compile
sbt assembly
它报告了很多Cannot resolve symbols
inimports
和classes
方法调用,objects
如下所示。此外,它认为很多导入是未使用的(对于它找不到的符号)
有趣的是,所有这一切都发生在我的一个项目中(包含两个submodules
内部父模块),而其他Scala
项目(包括那些包含submodules
)工作正常。
我没有运气尝试过的事情:
- 删除 (
rm -rf
) 与构建相关的目录,如.idea
,target
,~/.ivy2/caches
Invalidate Caches / Restart...
- 更新
IntelliJ IDEA
和Scala
插件到最新版本 - 关闭并重新导入项目,退出
IntelliJ
,重启电脑(!)
我在用着:
- IntelliJ IDEA 2017.3.2(社区版)
- Build #IC-173.4127.27,建于 2017 年 12 月 25 日
- JRE:1.8.0_152-release-1024-b8 x86_64
- JVM:JetBrains sro 的 OpenJDK 64 位服务器 VM
- Mac OS X 10.13.2
我的项目配置是:
- 斯卡拉 v2.11.11
- SBT v1.0.3
再一次,我想提醒一下,我的Scala
代码是完全正常的,并且我能够运行其他地方JAR
生成的代码sbt assembly
而不会出现问题。
scala - 带有 SBT 组件的多个主要类
我正在寻找为 AWS Lambda 创建 jar 来运行作业任务。目前我的 build.sbt 文件看起来像这样:
运行sbt assembly
将模块组装service
到我的 API 的 jar 中,并且工作正常。然而,该模块job
将有多个Main
类(一个公关工作),并且当我运行sbt assembly job
该service
模块时,它也会被组装(即使它不依赖于它)。
如何将我的设置配置为仅job
在需要时组装模块,并将各个 mainClasses 指定为单独组装的 jar?
sbt - 可以禁用 sbt 1.x 服务器吗?
我的一些构建和插件使用私有部署凭据(有时从文件系统读取,有时通过InteractionService
.
尽管这可能过于偏执,但我尽量小心地尽量减少使用私人信息的软件的攻击面,并且在这些构建中不必要地运行服务器(即使在 localhost 或 UNIX 套接字上)感觉就像是不卫生。
我一直在寻找可以在插件中设置的设置,该设置将禁用服务器启动,除非被构建覆盖。到目前为止还没有发现这样的东西。有这样的设置吗?
非常感谢!
更新:在 Eugene Yokota 的帮助下,从 sbt 1.1.1 开始,现在有一个布尔autoStartServer
设置。构建和插件可以通过设置来防止服务器自动启动autoStartServer := false
。startServer
(如果他们愿意,用户仍然可以通过运行手动启动服务器。)
scala - IntelliJ IDEA - sbt 插件 - '表达式类型 Def.Setting [...] 必须符合 sbt 文件中的 DslEntry'
我寻找了类似的问题,我发现了这个:
表达式类型 DslEntry 必须符合 SBT 文件中的 Def.SettingsDefinition 行 enablePlugins(JavaServerAppPackaging)
我的问题是类似的,但发生在每一行。
当我尝试运行时,它编译并成功运行。当我单击“导入项目”时,黄色通知没有消失,但项目重新加载成功。如果我将任何行重写为,例如,val _ = scalaVersion := "2.12.4"
错误就会消失,但它看起来很糟糕。
scala - 插件应该缓存 Initialize[Task[T]] 对象吗?
通过试验和可能的错误,作为插件作者,我已经使用以下样式,这似乎有效:
不幸的是,我实际上并不了解所有这些构造是如何工作的,例如为什么它是一个Initialize[Task[T]]
I 生成而不是一个Task[T]
. 我假设这个成语“做正确的事”,我认为这意味着该amazeTask
函数为每个生成一些不可变任务的包装器或种子或生成器,Configuration
并将其绑定到适当的任务键一次。但这对我来说是完全不透明的。例如,当我查找Initialize时,我看到一个value
需要参数的方法,我在上面的成语中没有提供该参数。我假设在设计 SBT 配置时使用了带有隐式和/或宏的 DSL 技巧,并且对此不以为然。
但是,最近我想将我的任务中的一些逻辑分解为逻辑上私有的函数,但也需要访问任务和设置的值。如果只使用私有函数,收集所有参数将成为表单的重复样板
我需要使用的任何地方都可以从设置中获取值。所以最好将所有这些因素都纳入一项derivedValue
任务,我可以将上述所有内容替换为
科尔。
但我确实想derivedValue
保密,所以我不将它绑定到任务键。我只是这样做:
现在它可以很好地实现我真正的公共任务......
伟大的!它确实工作得很好。
但是我很难假设这个习语有一些魔法可以做正确的事情,那就是Task
每个配置只生成一个不可变对象并重用它。所以,我对自己想,我应该记住这个findDerivedValueTask
函数,这样在它生成一个任务之后,这个任务就会被存储在 a 中Map
,它的键是Configuration
s,但它的值在逻辑上Task
是 s。
但现在我不理解幕后发生的事情。我应该存储Initialize[Task[DerivedValue]]
还是只存储Task[DerivedValue]
,还是什么?我是否需要打扰,sbt 是否有一些聪明的魔法已经在为我处理这个问题?我真的只是不知道。
如果你已经读到这里,我非常感激。如果您能澄清这一点,或者向我指出解释这些东西如何工作的文档,我将更加感激。谢谢!
sbt - sbteclipse:创建 build.sbt 和 plugins.sbt
我已经下载了 sbt 并解决了代理 maven 存储库错误,我使用 my-maven-proxy-releases 创建了存储库文件:在 ~/.sbt
当我做 sbt about 时,我得到以下详细信息:
现在,我想在 Eclipse 中导入一个项目,然后用 Google 搜索。这是我找到的细节。
但是我对在哪里创建 build.sbt 和 plugins.sbt 感到困惑,因为我的文件夹结构是这样的:
我没有看到在 sbt 中显示的 ~/.sbt/1.0.4 。
如果我的理解有误,请指导。
scala - 使用 sbt 构建 scala 项目时,scala 的版本有什么关系?
我正在使用 SBT 1.x 构建一个 scala 项目(用 scala 2.11 编写)。有一些“scala 版本”让我感到困惑。
请帮我弄清楚它们之间有什么区别或关系。以及 SBT 在编译或运行项目时如何区分它们?