You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地发布的SBT插件引入项目后执行报错排查

问题分析与解决步骤

第一个报错:Not a valid command: scalafmt

你的自定义插件仅负责生成通用配置文件,但未引入scalafmt官方的SBT插件,导致项目无法识别scalafmt命令。

解决:

在项目的plugins.sbt中同时添加官方scalafmt插件和你的自定义插件:

// 官方scalafmt插件,版本需与配置中的3.6.1兼容(2.5.0适配scalafmt 3.x系列)
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0")
// 你的自定义通用配置插件
addSbtPlugin("com.openelectrons" % "openelectrons-scalafmt-common-sbt-plugin" % "0.0.1")

第二个报错:missing setting 'version'

项目根目录的.scalafmt.conf未引用插件生成的.scalafmt-common.conf,导致scalafmt无法读取到version配置。

解决:

在项目根目录的.scalafmt.conf中添加引用语句:

// 引入插件生成的通用配置
include ".scalafmt-common.conf"

插件代码优化建议

当前插件每次加载SBT都会重复写入配置文件,可调整为仅在文件不存在时生成:

import sbt._
import Keys._

object MyScalafmtPlugin extends AutoPlugin {
  override def trigger = allRequirements
  override def requires = plugins.JvmPlugin
  
  val scalafmtGenerateConfig = taskKey[Unit]("Generate common scalafmt config")
  
  override def buildSettings: Seq[Def.Setting[_]] = Seq(
    scalafmtGenerateConfig := {
      val configFile = file(".scalafmt-common.conf")
      if (!configFile.exists()) {
        IO.write(
          configFile,
          """version = 3.6.1
            |maxColumn = 120
            |""".stripMargin
        )
      }
    },
    // 让配置生成任务在SBT加载时自动执行
    onLoad in Global += (_ => scalafmtGenerateConfig.value)
  )
}

额外警告处理

关于publishMavenStyle的未使用警告,可直接删除该设置,或添加到忽略列表:

// 在项目build.sbt中添加
Global / excludeLintKeys += publishMavenStyle

内容的提问来源于stack exchange,提问作者joesan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:10:20