在我的程序中,我需要同时为Spark2和Spark3开发程序。所以我需要编译两次。目前的方法是使用shell脚本,就像:
./gradlew package -Pscala=2.11.8 -Pspark=2.3.2 ./gradlew package -Pscala=2.12.8 -Pspark=3.3.1
字符串我想迁移到SBT,交叉编译可以完成吗
e37o9pze1#
SBT's cross compilation主要用于针对多个Scala版本进行交叉编译。如果你想编译的每个Spark版本都与一个Scala版本相关,你可以使用SBT交叉编译来解决这个问题。一个更好的解决方案可能是使用"multi modules"的SBT功能,并为每个Spark版本(可选交叉编译为多个Scala版本)提供一个模块,共享所有(或部分)源代码+不同的库版本(如果需要)。有很多方法可以实现这一点,如果你走这条路,遇到问题,张贴一个具体的问题在这里,我们会帮助。还有一个sbt-project-matrix插件,它可以为你简化一些子模块,也可以处理交叉编译,但方式与SBT默认的不同。
1条答案
按热度按时间e37o9pze1#
SBT's cross compilation主要用于针对多个Scala版本进行交叉编译。
如果你想编译的每个Spark版本都与一个Scala版本相关,你可以使用SBT交叉编译来解决这个问题。
一个更好的解决方案可能是使用"multi modules"的SBT功能,并为每个Spark版本(可选交叉编译为多个Scala版本)提供一个模块,共享所有(或部分)源代码+不同的库版本(如果需要)。
有很多方法可以实现这一点,如果你走这条路,遇到问题,张贴一个具体的问题在这里,我们会帮助。
还有一个sbt-project-matrix插件,它可以为你简化一些子模块,也可以处理交叉编译,但方式与SBT默认的不同。