Gradle打jar包,包含所有依赖
前言
最近被gradle折腾的欲仙欲死。
gradle想把所有依赖打进jar包主要有两种方式:一种是重写jar动作,一种是用第三方插件。
为了装x,我一直都是用的第一种方式,结果出了问题解决不了,为了不影响进度,只能先用第三方了。
重写jar动作
主要是into这一句,可以参照gradle的api文档。里面专门讲了这一块。
这种方式生成的jar包,是把所有的依赖全部打进了lib中。我一直在用这种方式打包。
然后在用spark-submit提交任务的时候,仍然会出现缺包的问题,比如我在运行spark-streaming程序的时候,就是死活找不到KafkaUtil$。但是相关的jar包的确是打进去了,百思不得其解。
所以就用了下面这种方式。
jar { manifest { //incubating版本,以后版本可能会改API attributes("Main-Class": "com.KafkaWordCount", "Implementation-Title": "Gradle") } into('lib') { from configurations.runtime }