从命令行或环境将 scalac opts 传递给 Maven

Passing scalac opts to Maven from the command-line or environment

我正在寻找一种不显眼的方式让 mvn 知道我想通过命令行或环境传递给 scalac 编译器的其他标志 仅限变量.

我目前正在使用 scala-maven-plugin 和如下命令:

mvn --show-version --batch-mode --errors compile

在这种情况下,我希望 mvn 将编译阶段视为已传递标志,例如:

scalac -encoding utf8 -deprecation -unchecked -Xlint:_ -Werror -Wdead-code -Wunused:_

想碰project's pom.xml。在这种情况下,原因是这是上游 CI/CD 模板存储库中的一个步骤,所以我没有权限扰乱下游项目的 Maven 配置。

这似乎不是 MAVEN_OPTS 的目的,所以我想知道是否有其他选择可以与 scalac 交谈。

scala:compile-DaddScalacArgs 结合使用可让您向 scalac 传递额外的标志:

示例:

mvn \
  --show-version \
  --batch-mode \
  --errors \
  scala:compile \
  -DaddScalacArgs='-unchecked|-deprecation|-explaintypes|-Xfatal-warnings|-Xlint:_'

文档:

请注意,scalac 的可用选项已随 Scala 版本发生变化。

您可以使用:

  • mvn scala:help
  • scalac -X
  • scalac -Xlint:help

查看基础版本和可用的 -X 选项。