今天记录下Azkaban3.57版本的编译,此文是在idea编译且打包的过程。如果在linux上,则须按照官方文档操作即可,linux编译打包我会再起一篇文档。
build Azkaban3.x 的依赖: gradle 、JDK
1、先安装JDK,Azkaban3.x依赖JDK1.8 ,安装JDK和配置环境变量就不介绍了
2、再安装gradle,Azkaban3.x源码对应的gradle版本是4.0,因此在下载gradle的时候选择版本尽量选择版本差异比较小的,我这里是4.6。
安装gradle在网上一搜一大把,这里简单引用一个:https://blog.csdn.net/wellplaying/article/details/78616520 ,配置好gradle后,打开idea,File->setting-->gradle ,可以看到idea 自动识别了gradle,我的idea是2019.1版本的。
导入工程,File ---> open 选择你要倒入的工程路径。 导入后,会自动build。但一般都不成功,因为会下载很多jar包,而这些包是从maven中央仓库下载,会很慢,时间长了就超时了。因此需要更改一下仓库,改成阿里的。如下:
打开工程,找到build.gradle 文件,打开
搜索maven,会发现几个地方:将mavenCentral() 、mavenLocal() 注释掉,更改阿里镜像
http://maven.aliyun.com/nexus/content/groups/public/
如下图
做完以上操作,需要重新加载一下。如下图,先点击gradle,再点刷新。这就开始下载各种依赖包了。需要等一会。如果要打包,用来部署,点击distribution的distTar或者distZip。如下图
打包需要一定时间,因为使用阿里云的镜像库,所以下载包是很快的,但是整个项目打包到azkaban-web-server的时候,会使用到nodejs,会去下载nodejs,但是有时候nodejs官网下载很慢,甚至失联,就会有timeout的情况,多试几次。一般都能打包成功。
注:我编译运行的是Azkaban3.57,在之前我在linux上编译打包过master主分支的代码,不成功,3.6x的版本也不行,只有3.57这个版本可以。因此在idea中我也选择了这个版本。
注:发现一个小规律,打包时在nodejs的官网下载经常超时。怎么能确保你打包的时候不超时呢?
先去源码中查看azkaban-web-server模块,里面有个build.gradle。在里面搜索distBaseUrl,发现
// Base URL for fetching node distributions (change if you have a mirror). distBaseUrl = 'https://nodejs.org/dist'
注释的意思是如果你有其他的镜像,也可以换。这个确实是这样,如果你有的话可能下载更快。我这里没有,那我怎么办?
这个文件的distBaseUrl设置的上方还有句代码
version = '8.10.0'
这个是nodejs的版本,那么其实nodejs的下载路径就有了(知道的别说我饶了这么大弯说这个,哈哈),https://nodejs.org/dist/v8.10.0。你把这个链接复制在浏览器中,访问,会发现有的时候这个网页打开很久都打不开,这时候你就不要去打包azkaban的工程,什么时候你刷新页面出来类似下面的内容的时候,就说明此时nodejs的官网下载是可用的,一般在这时候打包azkaban,一般都能一次成功。
OK 到此 打包结束,打出来的包在哪呢?在各自的模块的/build/distribution下面:
部署Azkaban,如果是单机且web 和 exec server在一个进程中的话,可以去azkaban-solo-server下找打好的包。如果是 web 和 exec server不在一个进程中,或者是分布式的Azkaban,就去azkaban-web-server和azkaban-exec-server中去找。当然,azkaban的mysql初始化sql语句在azkaban-db模块中找。
至此,可以部署自己编译的Azkaban了,开启你的二次开发之旅吧。