我有一个库,它需要两个不同版本的"com.thesamet.scalapb" %% "compilerplugin",这取决于Scala版本。
在我的project/scalapb.sbt中,我有以下代码:
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:
[info] Setting Scala version to 2.11.12 on 13 projects.
[info] Excluded 1 projects, run ++ 2.11.12 -v for more details.所以我想这个命令是:
如何将sbt-protoc与sbt交叉构建集成?
发布于 2020-10-22 19:58:21
project目录中的sbt文件在获取特定scala版本以进行交叉构建之前进行评估。这就是为什么传递++2.11.12对project/scalapb.sbt上下文中的scalaBinaryVersion没有影响的原因。
目前还不正式支持在单个构建中使用不同版本的编译器插件,但是可以尝试以下几种解决方法:
libraryDependencies += "com.thesamet.scalapb" %% "scalapb-runtime" % (if (scalaVersion.value == "2.12.10") "0.10.8" else "0.9.7")https://stackoverflow.com/questions/64477120
复制相似问题