首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SBT插件的交叉发布

SBT插件的交叉发布
EN

Stack Overflow用户
提问于 2018-04-04 16:17:43
回答 1查看 571关注 0票数 0

我的目标是编写一个SBT插件,它可以用于SBT0.13.x和1.x版本的SBT。基于线程和文档。我为我的插件项目编写了以下build.sbt

代码语言:javascript
复制
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时我看到了

代码语言:javascript
复制
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的两个版本发布什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-04 18:28:11

我去了SBT的gitter频道,在那里和SBT的创建者进行了交谈。基于这段对话,我创建了一个工作示例。我在这里列出它,以帮助人们交叉发布sbt插件在未来。

项目/建筑。

代码语言:javascript
复制
sbt.version=0.13.17

build.sbt

代码语言:javascript
复制
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插件,我们必须做

代码语言:javascript
复制
sbt ^publishLocal

哇。不知道^sbt +publishLocal是用于交叉发布普通二进制文件,而不是插件。对于sbt插件的交叉发布,我们必须做sbt ^publishLocal

需要注意的一点是,只有在使用SBT0.13.17时才需要使用scalaCompilerBridgeSource。如果在插件项目中升级到SBT1.1.0,那么代码就简化了。

项目/建筑。

代码语言:javascript
复制
sbt.version=1.1.2

build.sbt

代码语言:javascript
复制
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"
   )
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49655843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档