前言
最近为了解决Spark2.1的Bug,对Spark的源码做了不少修改,需要对修改的代码做编译测试,如果编译整个Spark项目快的话,也得半小时左右,所以基本上是改了哪个子项目就单独对那个项目编译打包。
Spark官方已经给出了如何使用mvn单独编译子项目的方法:http://spark.apache.org/docs/latest/building-spark.html#building-submodules-individually
使用mvn单独编译子项目是节约了不少时间。但是频繁的改动项目,每次用mvn编译还是挺耗时间的。
之前看官方文档提到,对于开发者,为了提高效率,推荐使用sbt编译。于是,又查了下文档资料:http://spark.apache.org/developer-tools.html
咦,看到:Running Build Targets For Individual Projects,内容如下:
$ # sbt$ build/sbt package $ # Maven$ build/mvn package -DskipTests -pl assembly
这不是坑么,虽然没怎么用sbt编译过Spark,但是sbt俺还是用过的。build/sbt package明明是编译整个项目的好吧,这哪是编译子项目啊。
翻遍官方所有跟编译有关的资料,无果。
最后,研究了下Spark的sbt定义,也就是下project/SparkB
