在我的程序中,我需要同时为Spark2和Spark3开发程序。 所以我需要编译两次。目前的方法是使用shell脚本,就像:
./gradlew package -Pscala=2.11.8 -Pspark=2.3.2
./gradlew package -Pscala=2.12.8 -Pspark=3.3.1
我想迁移到 SBT。可以通过交叉编译完成吗
SBT 的交叉编译主要用于针对多个 Scala 版本进行交叉编译。
如果您要编译的 Spark 的每个版本都与单个 Scala 版本相关,您可以使用 SBT 交叉编译作为一种解决方法。
更好的解决方案可能是使用“多模块”的 SBT 功能,并为每个 Spark 版本(可选地交叉编译为多个 Scala 版本)提供一个模块,共享所有(或部分)源代码+不同的库版本(如果需要)。
有很多方法可以实现这一点,如果您这样做并遇到问题,请在此处发布具体问题,我们将提供帮助。
还有 sbt-project-matrix 插件,它可以为您简化一点子模块,还可以处理交叉编译,但方式与 SBT 默认方式不同。