scala 2.13 - 编译插件时出错
Posted
技术标签:
【中文标题】scala 2.13 - 编译插件时出错【英文标题】:scala 2.13 - error during compiling plugin 【发布时间】:2020-02-14 15:05:56 【问题描述】:我想创建一个 sbt 插件
这是我的项目
build.sbt 文件:
lazy val root = (project in file(".")).
settings(
name := "test-plagin",
version := "0.1.0",
organization := "com.test",
scalaVersion := "2.13.0",
sbtPlugin := true,
)
带有任务的主文件
import sbt.AutoPlugin, TaskKey
object HelloPlugin extends AutoPlugin
object autoImport
val sayHello: TaskKey[Unit] = TaskKey("saying hello")
import autoImport._
override def projectSettings = Seq(
sayHello :=
println("hello")
)
在编译过程中出现错误: java.lang.NoClassDefFoundError: scala/collection/immutable/StringOps 当我将版本更改为 2.12.6 - 编译成功。 如何修复 2.13 中的错误?
【问题讨论】:
【参考方案1】:sbt 是用 Scala 2.12 编写的
https://github.com/sbt/sbt/blob/develop/project/Dependencies.scala#L9
https://github.com/sbt/sbt/issues/5032
所以你应该为 sbt 插件使用 Scala 2.12。
【讨论】:
好的,谢谢,但是如何在使用 scala 2.13 的项目中导入使用 scala 2.12 的插件? “导入”是什么意思?插件项目(2.12)有Scala版本,使用插件的项目有Scala版本(例如2.13)。 我的意思是我有两个项目:一个是 2.12 版的 scala 插件,我将它推送到了 artifactory,所以它有一些host/artifactory/sbt-release/com/test/test-plugin_2.12_1。 0/0.1.0/test-plugin-0.1.0.jar。我有 scala 2.13 的第二个项目,我想向这个项目添加插件,但它在 forlder 2.13 中搜索插件 插件项目使用sbt publishLocal
,第二个项目使用addSbtPlugin("com.organization" % "sbt-yourplugin" % "pluginversion")
project/plugins.sbt
。以上是关于scala 2.13 - 编译插件时出错的主要内容,如果未能解决你的问题,请参考以下文章