【问题标题】:Add plugin's plugin dependency as plugin dependency of user添加插件的插件依赖作为用户的插件依赖
【发布时间】:2018-07-15 08:01:02
【问题描述】:

我正在创建一个用于我公司所有 Scala 项目的 SBT 插件。它是常用 SBT 插件的集合和可以在任何地方共享的通用配置。我的插件使用例如sbt-release:配置凭据,设置发布过程,默认发布存储库等。所以我将其添加为插件依赖项

project/plugins.sbt:

addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.7")

但是我想向我的用户公开这个插件,以便他们可以致电sbt release。目前我有以下代码:

build.sbt

sbtPlugin := true

/* common release configuration code */

addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.7")

如果我删除最后一行,我的用户将无法调用sbt release。但是我想避免两次声明依赖项。我能做得更好吗?

【问题讨论】:

    标签: plugins sbt


    【解决方案1】:

    我采用了不同的方法,因为配置甚至没有以这种方式应用,而且它还解决了重复问题。我为插件创建了 Scala 文件,而不是 sbt 文件,并将所需的插件依赖项包含在 build.sbt 中。这样一来,您根本不需要将其添加到 project/plugins.sbt

    例子:

    build.sbt

    sbtPlugin := true
    
    addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.7")
    

    src/main/scala/mycompany/MyReleaseConfigPlugin.scala

    package mycompany
    
    import sbt._
    import Keys._
    
    object MyReleaseConfigPlugin extends AutoPlugin {
      override def trigger: PluginTrigger = allRequirements
      override def requires = sbtrelease.ReleasePlugin
    
      /* common release configuration code example */
      import sbtrelease.ReleasePlugin.autoImport._
      import ReleaseTransformations._
      override lazy val projectSettings = Seq(
        releaseProcess := Seq[ReleaseStep](
          checkSnapshotDependencies,
          inquireVersions,
          runClean,
          setReleaseVersion,
          commitReleaseVersion,
          tagRelease,
          publishArtifacts),
        releaseIgnoreUntrackedFiles := false,
        publishMavenStyle := true,
        credentials += Credentials(
          "Artifactory Realm",
          "artifactory.mycompany.com",
          sys.env.get("REPO_USER").getOrElse(""),
          sys.env.get("REPO_PASS").getOrElse(""))
      )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 2016-10-08
      • 2016-06-09
      • 2012-09-01
      • 1970-01-01
      相关资源
      最近更新 更多