前言
最近為了解決Spark2.1的Bug,對(duì)Spark的源碼做了不少修改,需要對(duì)修改的代碼做編譯測試,如果編譯整個(gè)Spark項(xiàng)目快的話,也得半小時(shí)左右,所以基本上是改了哪個(gè)子項(xiàng)目就單獨(dú)對(duì)那個(gè)項(xiàng)目編譯打包。
Spark官方已經(jīng)給出了如何使用mvn單獨(dú)編譯子項(xiàng)目的方法:http://spark.apache.org/docs/latest/building-spark.html#building-submodules-individually
使用mvn單獨(dú)編譯子項(xiàng)目是節(jié)約了不少時(shí)間。但是頻繁的改動(dòng)項(xiàng)目,每次用mvn編譯還是挺耗時(shí)間的。
之前看官方文檔提到,對(duì)于開發(fā)者,為了提高效率,推薦使用sbt編譯。于是,又查了下文檔資料:http://spark.apache.org/developer-tools.html
咦,看到:Running Build Targets For Individual Projects,內(nèi)容如下:
$ # sbt$ build/sbt package $ # Maven$ build/mvn package -DskipTests -pl assembly
這不是坑么,雖然沒怎么用sbt編譯過Spark,但是sbt俺還是用過的。build/sbt package
明明是編譯整個(gè)項(xiàng)目的好吧,這哪是編譯子項(xiàng)目啊。
翻遍官方所有跟編譯有關(guān)的資料,無果。
最后,研究了下Spark的sbt定義,也就是下project/SparkB