从命令行或环境将 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:_'
文档:
- https://davidb.github.io/scala-maven-plugin/compile-mojo.html#addScalacArgs
- https://davidb.github.io/scala-maven-plugin/example_compile.html
请注意,scalac
的可用选项已随 Scala 版本发生变化。
您可以使用:
mvn scala:help
scalac -X
scalac -Xlint:help
查看基础版本和可用的 -X
选项。
我正在寻找一种不显眼的方式让 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:_'
文档:
- https://davidb.github.io/scala-maven-plugin/compile-mojo.html#addScalacArgs
- https://davidb.github.io/scala-maven-plugin/example_compile.html
请注意,scalac
的可用选项已随 Scala 版本发生变化。
您可以使用:
mvn scala:help
scalac -X
scalac -Xlint:help
查看基础版本和可用的 -X
选项。