我正在创建一个SBT插件,用于我公司的所有Scala项目。它是一组常用的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。但是,我希望避免两次声明依赖项。我能做得更好吗?
发布于 2018-02-06 23:18:26
我采用了一种不同的方法,因为配置甚至没有以这种方式应用,而且它还解决了重复问题。而不是sbt文件,我为插件创建了Scala文件,并在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(""))
)
}https://stackoverflow.com/questions/48622991
复制相似问题