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 - 编译插件时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 Geolocation 插件编译时出错

在一个clang插件中,如何查看编译翻译单元是不是出错?

使用 grails 安全插件时出错

为啥我在尝试使用 vuefire 插件时会出错?

编译“ant”构建时出错

启动使用 SORM 框架的 Scala 项目时出错