我的目标是编写一个SBT插件,它可以用于SBT0.13.x和1.x版本的SBT。基于这线程和这文档。我为我的插件项目编写了以下build.sbt
lazy val foo = (project in file(".")).settings(
name := "foo",
sbtPlugin := true,
organization := "com.bar",
version := "1.0.0",
scalaVersion:= "2.12.4",
sbtVersion in Global := "1.0.0",
crossSbtVersions := Seq("0.13.17", "1.0.0"),
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.3.3"
),
scalaCompilerBridgeSource := {
val sv = appConfiguration.value.provider.id.version
("org.scala-sbt" % "compiler-interface" % sv % "component").sources
}
)当我做sbt +publichLocal时我看到了
info] Packaging /Users/user1/IdeaProjects/fulfillment-sbt/target/scala-2.12/sbt-0.13/foo-1.0.0-javadoc.jar ...
[info] Done packaging.
[info] published foo to /Users/user1/.ivy2/local/com.bar/foo/scala_2.12/sbt_0.13/1.0.0/poms/foo.pom
[info] published foo to /Users/user1/.ivy2/local/com.bar/foo/scala_2.12/sbt_0.13/1.0.0/jars/foo.jar
[info] published foo to /Users/user1/.ivy2/local/com.bar/foo/scala_2.12/sbt_0.13/1.0.0/srcs/foo-sources.jar
[info] published foo to /Users/user1/.ivy2/local/com.bar/foo/scala_2.12/sbt_0.13/1.0.0/docs/foo-javadoc.jar
[info] published ivy to /Users/user1/.ivy2/local/com.bar/foo/scala_2.12/sbt_0.13/1.0.0/ivys/ivy.xml
[success] Total time: 9 s, completed Apr 4, 2018 11:12:38 AM但它没有发布1.0版的SBT。我能为SBT的两个版本发布什么呢?
发布于 2018-04-04 18:28:11
我去了SBT的gitter频道,在那里和SBT的创建者进行了交谈。基于这段对话,我创建了一个工作示例。我在这里列出它,以帮助人们交叉发布sbt插件在未来。
项目/建筑。
sbt.version=0.13.17build.sbt
lazy val p = (project in file(".")).settings(
name := "sbt-crosspublish",
sbtPlugin := true,
organization := "com.abhi",
version := "1.0.0",
crossScalaVersions := Seq("2.10.6", "2.12.0"),
crossSbtVersions := Seq("0.13.17", "1.0.0"),
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.3.3"
),
scalaCompilerBridgeSource := {
val sv = appConfiguration.value.provider.id.version
("org.scala-sbt" % "compiler-interface" % sv % "component").sources
}
)最后,为了交叉发布SBT插件,我们必须做
sbt ^publishLocal哇。不知道^,sbt +publishLocal是用于交叉发布普通二进制文件,而不是插件。对于sbt插件的交叉发布,我们必须做sbt ^publishLocal。
需要注意的一点是,只有在使用SBT0.13.17时才需要使用scalaCompilerBridgeSource。如果在插件项目中升级到SBT1.1.0,那么代码就简化了。
项目/建筑。
sbt.version=1.1.2build.sbt
lazy val p = (project in file(".")).settings(
name := "sbt-crosspublish",
sbtPlugin := true,
organization := "com.abhi",
version := "1.0.0",
crossScalaVersions := Seq("2.10.6", "2.12.0"),
crossSbtVersions := Seq("0.13.17", "1.0.0"),
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.3.3"
)
)https://stackoverflow.com/questions/49655843
复制相似问题