尝试熟悉一下IDEA直接编译Flink,顺手记录一下全过程。
IDEA编译Flink1.11.1
下载源码确保网路通畅不再赘述
编译说明
要想把技术沉淀下来,阅读源码是必不可少的,既然要阅读源码怎么能不会编译呢?
根据我的总结,编译中遇到的问题可以归纳为几种
网络问题和组件环境版本不兼容
网络问题在编译的过程中是始终困扰我的,后面详细讲讲。
组件环境版本我一直没怎么注意,觉得是想当然向下兼容。
编译环境
编译平台 mac & win10
编译java版本 8u202
编译maven版本 3.2.5
win10推荐使用Administrator账户(非必须)
1 | net user administrator /active:yes |
mac对于账户没有特别的要求
Git设置proxy(详细可以见设置 27条)
Maven设置proxy(详细可以见设置 29条)
Nodejs版本管理
mac下的nodejs版本管理工具,就是n
1 | n list |
window下要安装一个nvm
1 | 先给nvm设置镜像 |
nvm设置
1 | nvm lsit |
Flink 1.11.1的版本是 v10.9.0
编译flink-runtime-web包
根据经验,凡是要用到WebUI,涉及到nodejs编译是最麻烦的,先把这个包单独拿出来编译试一下。
首先确保网络通畅,我们在国内所谓网络通畅,少不了一个好用的VPN,有了VPN再谈别的,不然啥都白扯。
SSR或者别的VPN在我们喜欢的端口设置了全局代理之后,Git和Maven才能顺利的下载依赖。
但是在这个flink-runtime-web
包里遇到一个双重代理的问题,我在Maven的setting.xml
文件里面设置了proxy,所以在这里对于nodejs的操作:
1 | [INFO] Found proxies: [ss{protocol='socks5', host='127.0.0.1', port=1080}] |
这样代理是无法正常下载的,我在setting.xml里面关掉了这个代理,运行的时候就变成了
1 | [INFO] Running 'npm ci --cache-max=0 --no-save' in /Users/flyhugh/Documents/Compile/flink-1.11.1/flink-runtime-web/web-dashboard |
这样的代码是可以通过的
网络问题
我宿舍的网是50M的,VPN的速度也很不错,但是使用maven代理的时候,速度却总是跟不上?不知道为什么
还好现在流量不贵了,使用流量代理速度总还凑合,以后有了5G速度就更行了。
总结
之前写过一篇杂七杂八的编译,成功的也莫名其妙,这次特地用了两个平台对比编译,其实只要调试好网络,设置好组件的proxy,Java和Maven的版本选择正确,编译并不是特别麻烦的事情。
不过那个pom确实是很复杂,如果自己修改源码的话,感觉还是挺麻烦的。
不过总算是解决了心头的一个结。
后续根据使用情况不定期更新。
内存设置得大一点(idea64.vmoptions << -Xmx8192m),编译速度会快不少。
win10下通过普通用户也编译成功,内存多给,编译速度加快。