Необходимо предоставить SettingKey из плагина, который я использую в своем плагине sbt - PullRequest
0 голосов
/ 07 февраля 2019

Я использую плагин распознавателя s3 и хочу переопределить его в моем 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 собственного.

Обновление

Мне не удалось разрешить fm.sbt.S3ResolverPlugin в MyPlugin, и код не скомпилируется.

Я попытался добавить его в enablePlugins на MyPlugin build.sbt, а также добавить в dependencies следующим образом:

libraryDependencies ++= Seq(
  "com.amazonaws" % "aws-java-sdk-sts" % amazonSDKVersion,
  "com.frugalmechanic" % "fm-sbt-s3-resolver" % "0.17.0"
)

Я получаю ошибку отsbt, о котором я спрашивал ниже:

sbt не может разрешить плагин как зависимость

1 Ответ

0 голосов
/ 07 февраля 2019

Если вы создаете AutoPlugin в каталоге project.Вы должны добавить это к 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 не работаетв scala файлах, скомпилированных для sbt, например, в плагинах.Вы должны указать import s операторов, как в простой программе Scala.Примерно так:

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 необходимо позвонить enablePlugins(S3ResolverPlugin) в build.sbt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...