如何在SBT ScalaFmt插件中直接传入配置文件替代字符串拼接
解决SBT插件中直接读取配置文件替代字符串拼接的问题
你可以把scalafmt的配置文件作为插件的资源文件嵌入,然后在代码中直接读取这个资源的内容,替代手动拼接字符串的方式。具体步骤如下:
第一步:添加配置文件到插件资源目录
在你的SBT插件项目中,创建src/main/resources目录(如果还没有的话),然后把你的.scalafmt-common.conf文件放到这个目录下。文件内容就是你之前拼接的配置:
version = 3.6.1 runner.dialect = scala213source3 project.git = true preset = default align.preset = none align.tokens = [ {code = "<-"}, ] docstrings.style = keep maxColumn = 120
第二步:修改插件代码读取资源文件
更新你的OpenElectronsScalaFmtPlugin代码,从资源中读取配置文件内容,替代手动拼接字符串:
package my.package import sbt._ import Keys._ object OpenElectronsScalaFmtPlugin extends AutoPlugin { override def trigger = allRequirements override def requires = plugins.JvmPlugin override def buildSettings: Seq[Def.Setting[_]] = { SettingKey[Unit]("scalafmtGenerateConfig") := { // 从插件资源中读取配置文件内容 val configContent = Option(getClass.getResourceAsStream("/.scalafmt-common.conf")) .map(IO.readBytes) .getOrElse(throw new RuntimeException("无法找到scalafmt配置资源文件")) IO.write(file(".scalafmt-common.conf"), configContent) } } }
关键说明
getClass.getResourceAsStream("/.scalafmt-common.conf"):从插件的classpath中读取指定的资源文件,路径开头的/表示根路径。IO.readBytes:sbt的IO工具类会自动处理输入流的读取和关闭,避免手动管理流的麻烦。- 增加了空值判断,如果找不到资源文件会抛出明确的异常,方便排查问题。
这样修改后,你可以直接在IDE中编辑.scalafmt-common.conf文件,享受语法高亮和格式提示,再也不用手动拼接字符串了。
内容的提问来源于stack exchange,提问作者joesan
相关产品推荐
相关产品推荐

