很久没写过java代码了,最近上手的
JanusGraph是java写的,那就顺便捡一下快速构建开发的环境吧.也方便之后的朋友减少环境搭建的时间大致包括IDEA+Maven+Git+Linux的工作流 (IDEA版本基于最新的2018.1) 文章会持续更新,相信会对新人有
一些帮助?
0x00.准备工作
虽然IDEA貌似内置了JDK跟maven,但是根据v2ex上的说法跟个人体会,的确建议使用自己配置的版本比较靠谱,避开java的各种环境问题很重要…janus基于jdk1.8开发,所以需要先安装. 然后安装好git,下好maven3.5.9 (这里有binary版和源码自编译版 ,选binary.)
Simply pick a ready-made binary distribution archive and follow the installation instructions. (Use a source archive if you intend to build Maven yourself.)
出于好奇我把源码版也下了一份,还意外发现了一个jenkinsfile ,值得以后参考~ 顺便也有个pom.xml文件,可以看出这就是开发项目的版本.而直用版的结构就简单很多了.了解一下mvn结构对以后加深理解mvn的东西还是很有益的.
注意: 如果安装完敲mvn命令没有提示, 就手动在系统的Path里面新增一行 /path/to/maven-3.6.0/bin
0x01.配置IDEA
这里可以参考文章自己DIY,也可以直接导入别人设置好的常用配置,我是直接导入的之前的护眼套装配置,也提醒下建议把设置好后的配置导出为setting.jar 方便以后快速还原. 然后手动配置一下JDK位置就行了. (忘记说了激活的事,补充更新一个简单长期稳定的办法)
0.Activation
IDEA激活有三种方式, 推荐看Lanyu同学说明. 首先记得在C:\Windows\System32\drivers\etc 修改hosts文件,添加0.0.0.0 account.jetbrains.com
1 | #这个码截止2020年3月11日,时间够了,更换也异常简单 |
2020.4更新: 后续会补充一个自建激活服务器的流程, 以便使用最新的版本, 以及给其他同学共享
1.快捷键
最好熟悉一下常用快捷键,可以提高不少效率. 我列一下总结后最常用的几个 :
double shift : 快速查找类, 成员或者方法.
ctrl + shift + f : 全项目搜索 (大项目常用, 用于搜索所有字符串)
ctrl+alt+←/→ 在方法引用间调整 (如果有屏幕旋转去intel的图形控制面板关掉)
alt+回车 快速提示
ctrl+w 代码快选取
ctrl+z和ctrl+shift+z 回退和前进(注意输入法快捷键冲突)
ctrl+alt+m: 快速抽取代码为函数 (父类大总管是ctrl+alt+shift+t?)
ctrl+e : 浏览最近打开过得文件,因为什么都去double shift也是有点蠢的.
ctrl + alt + h : 显示当前方法/变量在哪被调用了, 并显示调用栈 (推荐)
ctrl+alt+L 格式化代码 (注意PR的时候别随便全文使用)
alt+insert : 各种常见的代码补全,不过建议少用. 生成一堆臃肿的get/set/toString
ctrl+alt+u: 快速显示当前类/接口的依赖关系图(分析源码的时候神器…)
ctrl+shift+t:快速创建当前类的测试类,会自动在对应的test目录生成路径,很不错
ctrl+shift+F12 代码框最大化(双击也可) —> 完全全屏需要自己在View取消周边( <–不建议)
2.1 优化性能配置(重要)
一. 修改VM参数
Help -> Edit Custom VM Optipns ,本质是从ideaxx/bin/下复制了一份到你的用户目录~/username/20xx.idea/config 下. 这样更新IDEA或重装不会受影响, 推荐 .
1 | #IDEA启动会加载大量的索引到内存中,以便加速查找,所以内存充裕的时候尽量给多一些内存使用 |
上面特别要注意,不要随便大小写或者写小数点..比如-Xms1.5g 这样的写法会导致启动报错, 而且你很难找到原因, 多亏了stackoverflow的一位朋友提到这点…
二. 禁用不必要插件
idea默认会装许多插件, 但是很多可能一年也用不到一次, 这种建议默认关闭, 有需要再开, Files -> Setting --> Plugins 设置, 可以关掉许多的插件, 只剩30个以内, 默认估计开了近上百个…
2.2 优化参数配置(重要)
- 修改字体相关和背景颜色 , 推荐背景色使用豆沙绿.. (黑色长期也不是很舒服) .
- 修改Editor-General-Soft Wraps ,勾上第一第二项
use soft wraps in editor.(这样就会自动换行对齐而不用自己拖拽) - 自动导包:
Auto import --> Insert imports on paste == ALL,Add unamxx和智能优化导包勾上. - 开启自动编译: 在
Build--> Compiler --> Build project automatically, 并在子选项Java Compiler下方的Additional cmd line params添加-Xlint:unchecked以显示警告 (思考为什么会有警告, 尽量避免.) - 提示忽略大小写(string默认不会提示) :
Code Completion --> Case sensitive completion == None - 悬浮提示:
General --> Show quick documentation on mouse move == 500ms - 多文件tab换行:
Editor Tabs --> Show tabs in single row == false(去掉) , 也可以隐藏后缀名 - 项目编码设置:
File encodings --> UTF-8,然后勾上下面的自动转化ASCII编码. - 显示IDEA内存占用(辨别是否卡死):
Appearance --> Windows Options --> Show memory xx Tools --> Terminal, 替换Win默认的cmd为git-bash(比如D://Git/bin/bash.exe)- 我们可以通过
Ctrl+左键查看一个方法或者类的使用情况, 但是如果我们要查看Library的调用情况就会提示ctrl+alt+f7,但是你会发现并没有用. 解决方法其实很简单, 是因为默认搜索 - 了解底层必备的查看字节码, 在
view-->show bytecode自带, 不过注意更新后项目需要先编译一次.(不过需要注意的是. 这种做法比javap -c -s file获得的信息要少, 查看Signature这种还是需要自己去IDEA的Tools选项里手动添加一下, 也很简单.)
3. 插件精选
这里会不断精简,只放最通用,高效的插件(类似md插件,一律不考虑…)
必备: (优先级依次降低)
- Key Promoter X: 快捷键提醒插件, IDEA的快捷键太多, 它会自动提醒你, 而且会帮你把常用但是未设置快捷键的一键设置, 非常赞.
- SequenceDiagram: 自动生成方法的多级的调用时序图, 虽然不算很美观, 但是也非常有用了. 毕竟一键生成
- Alibaba Coding Guidelines : 对整个代码进行静态分析 (能检查出很多不规范写法,与findbugs结合非常赞)
- Arthas: 自动生成Arthas的提醒插件, 鉴于Arthas目前在Java问题定位里的地位, 我相信这款插件在大家没有很好掌握之前都是神器
- FindBugs-IDEA : 对你整个程序进行动态分析 (能检查出很多不当的使用方法.)
- Translation : 翻译插件, 配合
Chrome的Saladic使用.. 缺点是google访问有时候有点问题, 如果能把saladic内嵌就太棒了 - Maven helper : 查看maven依赖树,maven这个东西有时候出问题会非常蛋疼.. (安装好后点开pom文件,在text旁边)
可选:
- jclasslib : 字节码查看工具, 搞清底层原理必备(当然你也可以自己配置IDEA的
javap实现, 推荐-p/-c/-v 三种用法, 不过插件功能UI/分类一般做的更好.) , 当然IDEA现在已经自带了查看字节码的功能, 但是太简略了些. 所以建议还是配置javap的方式. - 查看内存布局的插件, 名字忘记了…研究jvm/并发考虑用
4. 常见问题
A.打开项目project只显示配置文件,不显示目录
- 删除项目下的
.idea文件夹, 这控制了IDEA加载项目的配置项等 - 重新打开刚才的项目, 会自动重建
.idea, 如果没有就重启一下IDEA.
B. 如果
0x02.Maven使用
A.配置Maven
idea内置了mvn,因为我下的最新版idea,这里先试试内置的版本(3.3.9).( 注意因为自己修改过源码的话,几个项目之间的依赖jar包版本肯定会有不一样,注意确认). 需要git下Cassandra+Tinkerpop+Janus三个项目.
- 首先在
tinkerpop的项目路径下输入命令git branch -a列出所有的版本,然后切换到开发版本git checkout remotes/origin/xxx -b xxx,然后通过git log检查一下最近代码提交人, 看看切换的分支是否正确. - 编译项目
mvn cleaninstall -DskipTests.(等待大概20min输出Build Success` ) - 进入
JanusGraph的项目路径,参考上述步骤1~2依次执行. - 打开IDEA导入项目,提示maven项目选是加载. 完成~
补充:如果编译报错,先检查顺序(tk需要先正常编译完),重新走第二步清理, 再开full log 日志模式看看(命令mvn install -DskipTests -X)
然后从打开IDEA,导入项目即可(可选直接git导入)
B.Maven其他操作
打jar包/war包.或者mvn test等一系列功能,maven功能还是挺强大的. 后续更新拆分在MVN使用
C. 编译打包(Linux下)
这个才是合理的做法, 在Win下使用maven编译打包简直是反人类的, 因为bash/shell里可能的大量路径和命令兼容问题, 所以建议换为Mac 或者用专门的开发机进行打包. 比如cent7下一键安装mvn+java8 :
1 | #就在你自己个人目录下就行了, 也免得有人改版本之类的蛋疼. |
0x03.配置Git
因为idea有很好的git插件,使用后跟idea可以很好的集成有各种状态图标提示. 所以一般优先考虑使用git插件, 当然不熟悉命令前还是多用git-bash吧. 那么来第一次上手配置.ctrl+alt+s 打开配置,选中version control ,然后选中子选项中的git.设置好正确路径test一下. 其中常用功能:
- 蓝色代表有改动,如果我想丢弃改动还原文件怎么做?()
- 红色代表
- S黄色代表
这里有一些我没完全理解的选项:
- 自动在优选(cherry-pick)下提交 (这是什么效果?什么才算cp?)
- 如果当前分支的推送被拒,则自动更新(什么效果?更新到什么?)
如果普通项目,想让它变为git项目,只需要在IDEA的VCS 选择开启git即可. 补充说一下,正式开发前,推荐阅读一下阮三篇 的git 工作流/规范/分支管理的文章.讲的很清晰很好. 特别是关于git flow ,gitlab有自身一套综合了原生git跟github的方式.
5.25更新:
后续Git相关,包括github PR,gitlab,git flow以及问题解决拆为新的Git-flow文章
0x04.Linux相关
linux相关说一些常用的技巧以及要注意的地方,也会顺便补一些shell的东西.所以主要先分命令技巧跟shell以及vim三个方面说.
0.Xshell相关
首先使用xshell6,因为是一个很大版本的更新,且个人使用免费(见抽取文),其次利用好xshell的功能,很多时候可以很大程度提高使用效率.比如:
- Ctrl+F1可以快速复制自定义字符串,这个在工具–>快速命令集可设置.
- Alt+S可以进入简化模式,这个挺好
- 按Ctrl+S会卡死暂停,这个异常的坑没有提示。按Ctrl+Q即可解锁(整蛊慎用)
- 在工具–>选项–>键鼠栏. 改右键为粘贴,并勾上选中文本自动复制 & 复制自动删除尾部空白,很有用
- 在上面的键鼠栏同级”更新”,建议顺便把更新的检测时间间隔改为60天,不然经常更新其实很扰人.
编码问题 :
先在Linux环境用locale 查看一下当前系统编码,然后看看alt+P打开设置调整“终端”编码相同即可。对了不要选择奇怪的zh字体,反而会有一些问题
完全不需要去折腾下语言包之类的(以后装Linux也别选中文,各种编码问题很醉人,折腾这毫无意义)
1.Java调试相关 (待抽取)
首先我们在Linux上遇到Java相关的问题,主要有几个排查思路,一是查看源码 .二是查看堆栈/进线程信息.
jstack(待单独文章说明)
快速反编译class文件
Linux上推荐先使用官方自带的工具:
javap -verbose className.class,很多时候我们只是确认一下这个jar包是否含有某个方法.
更新: 其他的Linux相关(shell,vim,bash)抽为单独的文章Linux技巧