【问题标题】:scala 2.13 - error during compiling pluginscala 2.13 - 编译插件时出错
【发布时间】: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 中的错误?

【问题讨论】:

    标签: scala sbt sbt-plugin scala-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
    猜你喜欢
    • 2012-03-06
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2019-08-14
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多