忽略某些 Scala 2.13 编译器选项才能成功构建

问题描述 投票:0回答:1

我有一个 Scala sbt 项目,我正在其中使用 sbt-tpolecat 插件:

// scalac options for the enlightened @see https://github.com/typelevel/sbt-tpolecat
addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.2")

当我使用

针对我的项目进行编译时

sbt 干净编译

我收到这个奇怪的警告,显示为错误:

[info] compiling 41 Scala sources and 2 Java sources to /Users/user/Projects/Private/scala-projects/open-electrons/cpo-platform/ocpp-gateway-server/target/scala-2.13/classes ...
[error] bad option: '-no-link-warnings'
[error] (Compile / compileIncremental) Compilation failed
[error] Total time: 2 s, completed Dec 23, 2024, 11:37:46 AM

如何使用 sbt-tpolecat 插件抑制此错误?还有其他更好的方法吗?

编辑:我试图通过将其添加到我的 build.sbt 来抑制此问题:

Compile / doc / scalacOptions += "-no-link-warnings"

但这没有任何效果,构建继续失败。

scala sbt
1个回答
0
投票

您尝试的解决方案添加

-no-link-warnings
作为调用编译器时的选项。

我也不确定您是否触及了正确的范围,因为原始描述中的错误表明,当您运行

Compile / compileIncremental
时会发生这种情况(据我所知,
sbt clean compile
不会自动调用编译在文档范围内 - 除非您自己设置这样做)。

您可能想尝试的是:

Compile / doc / scalacOptions -= "-no-link-warnings"

如果您想明确禁用多个选项,您可以这样做:

Compile / doc / scalacOptions --= Seq("-no-link-warnings")

评论中链接的票证有不同的方法,我将其留在这里供参考(但由于上面的方法有效,我可能会更喜欢这种方法,因为它可能更容易阅读和理解)。

Compile / doc / scalacOptions ~= (_.filterNot(
  Set(
    "-no-link-warnings",
  )
))

最后一个警告,不幸的是,以这种方式设置和取消设置选项很容易受到评估顺序的影响。我相信这对您来说应该不是问题,因为 IIUC 该插件应该在您的任何设置生效之前应用,但我想将其留在这里,以防您实际上手动应用设置。

最后一点,您可能需要考虑自己为编译器设置选项。这是一些额外的行,但它完全在您的控制之下,并且如果出现任何问题,您可能更容易调试(

this是您正在使用的插件的原始灵感,我已经看到复制和粘贴的那组选项多年来参与多个 Scala 项目。

© www.soinside.com 2019 - 2024. All rights reserved.