Maven
- java世界最流行的自动化构建工具之一
- java没有十分流行的脚手架工具,但是maven可以完成这样的工作
- maven定义了一个默认的声明周期,各个插件可以把工作内容绑定在各个声明周期上,maven在各个阶段执行时执行被绑定的插件,每个阶段都可以绑定多个目标,执行顺序取决于声明顺序
- maven执行某个声明周期命令时,回从声明周期开始运行到这个生命周期
- https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
特性
- 生命周期管理
- 依赖解析
-
IDEA
快捷键 keymap
alt + enter 任何不明白的地方皆可使用,用以提供提示
- 双击shift 快速搜索
- 查看定义 declaration
- 查看文件 navigate - file
- 高级查找 find in path
- 快速生成 generate
- 格式化 reformat code
- 优化导入 optimize imports
- 导航 navigate back\forward
- 谁调用这个方法 call hierarchy
- 所有的实现类 implementation
- 文件大纲 file structure
- 下一处错误 next highlighted error
- 高级重命名 rename
-
git集成
查找背锅侠 annotate\blame
- 查看文件历史版本
- 高级筛选方式查找commit记录
- 显示差异 show diff
-
其他
psvm 缩写public static void main
- sout、soutv
-
Debugger调试器
优点
利于算法的学习
- 理解程序执行的过程
- 理解jvm的内部构造
-
原理
-
用法
条件断点
- step over 无论该行需要调用几层函数栈,都直接跳过,完成当前行的执行
- step into 执行一个语句,一层一层的进入方法栈帧,呈现更加精细的执行过程
- resume 当前执行流程前进至下一个断点
- step out 跳出一个方法 与step into反之
- 显示方法栈,jvm主要有两部分组成,堆与栈
- 方法栈每个方块为一个栈帧,局部变量只存在于栈帧中 stack frame
- evaluate expression可以在jvm的任意状态下执行表达式
- 调试器甚至可以改程序结果等
-
高级用法
调试maven compile的过程
- 通过github找到源代码 git clone
- 使用idea打开pom,进而打开整个项目
- 使用mvnDebug compile 在某个端口监听 listening for transport dt_socket at address: 8000
- 打开源代码 edit configuration 设置remote http 通信,例如8000端口
- 选择正确的源代码版本,避免断点不一致的情况,设置断点进行调试即可