首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将sbt和scalapb与sbt交叉构建相结合?

如何将sbt和scalapb与sbt交叉构建相结合?
EN

Stack Overflow用户
提问于 2020-10-22 07:18:07
回答 1查看 164关注 0票数 0

我有一个库,它需要两个不同版本的"com.thesamet.scalapb" %% "compilerplugin",这取决于Scala版本。

在我的project/scalapb.sbt中,我有以下代码:

代码语言:javascript
复制
def scalapbVersion(version:String): String =
  if(version == "2.11") {
    println(s">>>>>>>> Using 0.9.7 to fix 2.11 compat. ${version}")
    "0.9.7"
  } else {
    println(s">>>>>>>> Using last version. ${version}")
    "0.10.2"
  }

libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % scalapbVersion(scalaBinaryVersion.value)

执行sbt clean "++2.11.12 compile我得到了>>>>>>>> Using lastest version. 2.12,但是在日志中,我还可以看到交叉构建插件在上一条消息之后将版本更改为Scala2.11:

代码语言:javascript
复制
[info] Setting Scala version to 2.11.12 on 13 projects.
[info] Excluded 1 projects, run ++ 2.11.12 -v for more details.

所以我想这个命令是:

  1. 使用默认Scala版本的sbt加载插件配置。
  2. 交叉构建更改scala版本

如何将sbt-protoc与sbt交叉构建集成?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-22 19:58:21

project目录中的sbt文件在获取特定scala版本以进行交叉构建之前进行评估。这就是为什么传递++2.11.12project/scalapb.sbt上下文中的scalaBinaryVersion没有影响的原因。

目前还不正式支持在单个构建中使用不同版本的编译器插件,但是可以尝试以下几种解决方法:

  1. 下载鳞状体以获得您想要使用的ScalaPB版本。编写一个使用ScalaPBC生成源的shell脚本。将生成的源代码签入代码存储库。手动将scalapb-运行时添加到libraryDependencies中的build.sbt中:
代码语言:javascript
复制
libraryDependencies += "com.thesamet.scalapb" %% "scalapb-runtime" % (if (scalaVersion.value == "2.12.10") "0.10.8" else "0.9.7")
  1. 对所有scala版本使用0.9.7。
  2. 如果这对您的情况是合理的,那么考虑放弃Scala2.11的支持,因为Scala2.11在几年前就已经结束了。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64477120

复制
相关文章

相似问题

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