问题标签 [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 插件 - 通过他们的 build.sbt 用户定义的命令配置
我正在编写一个添加命令的 SBT 插件,并希望用户能够通过在build.sbt
. 实现这一目标的最简单方法是什么?
这是插件外观的简化示例:
我希望有人能够将以下内容添加到他们的build.sbt
文件中:
如何String
从上面的命令中将其作为变量提供myCommand
?
sbt - SBT插件修改编译和测试任务
我正在创建一个插件,该插件将修改 compile:compile 和 test:test 任务。我的最终目标是能够做到sbt monkjack
或sbt monkjack:test
(要么都可以)。在 compile:compile 范围内我需要添加一个编译器插件,在 test:test 范围内我需要在测试完成后运行一些代码。
我的第一次尝试是尝试创建一个自定义配置,但是扩展、编译或测试哪个配置不清楚,因为两者都需要(目前我有两个,我将 CustomTest 复制到 CustomCompile 然后运行monkjack:test)。我的第二次尝试专注于一个自定义任务,该任务在设置各种选项后依次调用 (compile in Compile).value 和 (test in Test).value。
我意识到我对 SBT 任务的了解以及它们是如何相关/继承/范围的并不是很好。
Q1。是否有像 maven 这样的任务链?在maven中,如果你执行测试,它将按顺序执行其他阶段。所以 mvn clean test 将自动运行准备源、编译等。所以在 SBT 中,如果我运行sbt test
其他任务是如何自动执行的。
Q2。如果您使用自定义配置执行任务,例如sbt millertime:test
,该配置是否会传播到正在运行的其他任务。例如,这是否与相同sbt monkjack:compile monkjack:test
或相同sbt compile monkjack:test
或都不相同:)
Q3。任务如何知道它们的默认配置是什么?如果我这样做sbt compile
,SBT 怎么知道这意味着sbt compile:compile
什么?
Q4。这是最好的方式,自定义配置或新任务。
sbt - Sbt Plugin 添加依赖到 project/build.sbt
我有一个 sbt 插件,当启用它时,它会通过 scalac 选项添加一个 scalac 编译器插件。一切都很好。
但是,如果 scalac 编译器插件本身具有它需要使用的依赖项,我无法让它工作。我试过了:
- 将依赖项添加到目标项目 libraryDependencies
- 将其指定为 sbt-plugin 本身的依赖项。
我认为我需要做的是(它是一个自动插件):
如果projectsPluginsDependencies是有效键。这可能吗?
(事实上,我什至不确定如何手动将依赖项添加到最终项目中。如果编译器插件需要依赖项 X,您如何满足?我尝试将其添加到 project/build.sbt 中,但没有工作)。
只是为了超级清楚-我不是在问如何添加 sbt-plugin 需要的依赖项。我在问如何添加编译器插件需要的依赖项,它本身是由 sbt-plugin 添加的。
scala - 如何从 AutoPlugin 修改 Compile 中的 sourceGenerators?
我正在使用新的 AutoPlugin 机制为 sbt 编写代码生成插件。我需要修改sourceGenerators in Compile
设置,但不知何故,当我从插件中进行操作时它不起作用。调用 compile 后,屏幕上没有打印任何内容。
但是,如果我突然将这条线sourceGenerators in Compile <+= (mySourceGenerator in Compile)
移到项目的位置,则设置会被修改,并且当我运行编译任务时,消息会写入屏幕。build.sbt
sourceGenerators in Compile
那里有我想念的东西吗?插件的代码在这里:
sbt - 如何从 AutoPlugin 覆盖默认任务?
假设我要覆盖(替换)packageBin
任务的默认设置。所以我天真地写了一个这样的 AutoPlugin:
但这不起作用(至少不适用于 SBT 0.13.5 和 0.13.6-M1),我的版本packageBin
永远不会被调用。如果我将以下行放在我的项目build.sbt
文件中,那么它可以工作。
是否有可能通过 AutoPlugin 或经典插件实现这一点,如果可以,如何实现?
scala - 无法从 AutoPlugin 的命令运行自定义 sbt 任务
我尝试了我能想到的所有方法,但运行 taskB 仍然会出现错误消息,即如果我将它放在自定义配置中,*/*:taskB
或者在其中未定义任务。*/cmd:taskB
调试它时,似乎该任务不存在于structure.data
搜索它的位置。
sbt - 为什么 sbt 转向 AutoPlugin?
我最近被告知我的 sbt 插件不能使用神奇的新“自动插件”功能,这是推荐的机制。
- 为什么 sbt 这样做?
- 所有插件都必须更新吗?
- 它会支持 sonatype 快照版本吗?
我们的一位用户告知我不支持快照,但我无法找到明确的答案。当我们在稳定版本之间使用滚动版本时,我们将遇到严重的问题。
在我看来,如果 sbt 期望所有作者都做出改变来支持这一点,那将是一场灾难。sbt 的真正价值在于它有如此多的插件,如果做出的更改排除了其中一些插件,那么我们都会受苦。
sbt - 为什么 sbt-jsHint 没有在“sbt jshint”命令上执行?
我正在使用 typeFace 的 sbt-jsHint 插件:https ://github.com/sbt/sbt-jshint
遵循文档中提到的步骤,但无法运行“sbt jshint”并在 sbt 控制台中出现无效命令错误。
问题: 1. 使用 sbt 运行 jsHint 的最佳方式是什么?
尝试了另一个 sbt-jslint 插件并没有为我工作
谢谢,桑迪普
scala - SBT 插件仅适用于您的本地机器
很多时候,我需要添加不适用于项目但仅适用于我自己的 SBT 插件。例如,我使用 eclipse 作为我的 IDE,所以我想为我的所有 SBT 项目启用这个插件,而不必将它包含在 plugin.sbt 文件中。这是因为我的同事可能正在使用不同的编辑器,因此将此插件签入源代码管理是没有意义的。这可能吗?
sbt - 在 SBT 中,是否可以使用 AutoPlugin 将 IntegrationTest 配置添加到项目中?
我正在开发一个 AutoPlugin,我希望它将IntegrationTest
配置添加到启用该插件的项目中。这可能吗?
我的第一个想法是这可能在 中是可能的buildSettings
,但是我看到的添加IntegrationTest
配置显示的示例是通过对Project
实例的方法调用实现的......即(来自 SBT 文档):