需要从我在我的 sbt 插件中使用的插件中提供一个 SettingKey
Posted
技术标签:
【中文标题】需要从我在我的 sbt 插件中使用的插件中提供一个 SettingKey【英文标题】:Need to provide a SettingKey from a plugin I use in my sbt plugin 【发布时间】:2019-07-01 05:10:52 【问题描述】:我正在使用s3 resolver plugin,并希望在我的AutoPlugin
中覆盖它。
我已尝试将值添加到 projectSettings
和 globalSettings
。
错误
not found: value s3CredentialsProvider
[error] s3CredentialsProvider := s3CredentialsProviderChain
代码
lazy val s3CredentialsProviderChain = bucket: String =>
new AWSCredentialsProviderChain(
new EnvironmentVariableCredentialsProvider(),
CustomProvider.create(bucket)
)
override lazy val projectSettings = Seq(
publishTo :=
if (Keys.isSnapshot.value)
Some("my-snapshots" at "s3://rest-of-stuff")
else
Some("my-releases" at "s3://rest-of-stuff")
,
s3CredentialsProvider := s3CredentialsProviderChain
)
我正在处理的插件代码没有定义它自己的任何自定义设置,因此它没有自己的autoImport
。
更新
我一直无法解析MyPlugin
中的fm.sbt.S3ResolverPlugin
,代码无法编译。
我已经尝试将它添加到 MyPlugin
的 build.sbt 上的 enablePlugins
以及像这样将它添加到 dependencies
:
libraryDependencies ++= Seq(
"com.amazonaws" % "aws-java-sdk-sts" % amazonSDKVersion,
"com.frugalmechanic" % "fm-sbt-s3-resolver" % "0.17.0"
)
我从 sbt 收到一个错误,我在下面询问过:
sbt fails to resolve a plugin as dependency
【问题讨论】:
【参考方案1】:如果您在 project
目录中创建 AutoPlugin。您需要将此添加到plugins.sbt
。
addSbtPlugin("com.frugalmechanic" % "fm-sbt-s3-resolver" % "0.16.0")
如果你创建一个独立的插件,把这个添加到插件的build.sbt
sbtPlugin := true
addSbtPlugin("com.frugalmechanic" % "fm-sbt-s3-resolver" % "0.16.0")
autoImport
不适用于为sbt
编译的scala
文件,例如插件。您已像在简单的 scala 程序中一样指定 import
s 语句。像这样的
import fm.sbt.S3ResolverPlugin
import sbt._
object TestPlugin extends AutoPlugin
override def requires = S3ResolverPlugin
override def trigger = allRequirements
override def projectSettings: Seq[Def.Setting[_]] = Seq(
S3ResolverPlugin.autoImport.s3CredentialsProvider := ???
)
请注意,要启用TestPlugin
,您必须在build.sbt
中调用enablePlugins(S3ResolverPlugin)
【讨论】:
我遇到了一些问题,即 sbt 无法将插件正确解析为依赖项。我已经更新了同样的问题。 我曾尝试使用enablePlugins
作为替代方案,但它也不起作用。以上是关于需要从我在我的 sbt 插件中使用的插件中提供一个 SettingKey的主要内容,如果未能解决你的问题,请参考以下文章