Idea简介
简介:
- IDEA(www.jetbrains.com/idea/)是 JetBrains 公司的产品,公司旗下还有其 它产品,比如: ①WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术; ②PyCharm:用于开发 python ③PhpStorm:用于开发 PHP ④ RubyMine:用于开发 Ruby/Rails ⑤ AppCode:用于开发 Objective - C/Swift ⑥CLion:用于开发 C/C++ ⑦ DataGrip:用于开发数据库和 SQL ⑧ Rider:用于开发.NET ⑨ GoLand:用于开发 Go ⑩Android Studio:用于开发 android(google 基于 IDEA 社区版进行迭代)
- IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,IDEA 在业界被公认为是 最好的 java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI设计等方面的功能可以说 是超常的。
- IntelliJ IDEA 主要用于支持 Java、Scala、Groovy 等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 Web 应用的开发。
IDEA 的主要功能介绍:
- 语言支持上:
- 其他支持:
.IDEA 的主要优势:(相较于 Eclipse 而言)
-
强大的整合能力。比如:Git、Maven、Spring 等
-
提示功能的快速、便捷
-
提示功能的范围广
-
好用的快捷键和代码模板 private static final psf
-
精准搜索
windows 下安装过程:
-
硬件要求(Hardware requirements): ①内存:2 GB RAM minimum, 4 GB RAM recommended ②硬盘:1.5 GB hard disk space + at least 1 GB for caches ③屏幕:1024x768 minimum screen resolution
-
个人建议配置: 内存 8G 或以上,CPU 最好 i5 以上,最好安装块固态硬盘(SSD),将 IDEA安装在固态硬盘上,这样流畅度会加快很多。
-
软件要求(Software requirements): ①操作系统:Microsoft Windows 10/8/7/Vista/2003/XP (32 or 64 bit) ②软件环境: 1、 JRE 1.8 is bundled with the IntelliJ IDEA distribution. You do not need to install Java on your computer to run IntelliJ IDEA. 2、A standalone JDK is required for Java development
-
注意: ①Idea中切换JDK版本,不需要更改环境变量。 ②Idea的improt和open: <1>导入(import):如果原来的项目本来不是idea开发的项目,那么此时你想用idea来运行这个项目,就需要进行导入。(主要是缺少.idea文件) <2>打开(open):如果原来的项目本来就是idea开发,此时想要在你自己的idea中跑起来,那么就直接打开。(已存在.idea文件)
安装总结:
- 从安装上来看,IntelliJ IDEA 对硬件的要求似乎不是很高。
- 可是实际在开发中其 实并不是这样的,因为 IntelliJ IDEA 执行时会有大量的缓存、索引文件,所以 如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。
查看安装目录结构:
- bin:容器,执行文件和启动参数等
- help:快捷键文档和其他帮助文档
- jre64:64 位java 运行环境
- lib:idea 依赖的类库
- license:各个插件许可
- plugin:插件
- 其中:bin 目录下:
- 这里以我的电脑系统(64 位 windows7,16G 内存)为例,说明一下如何调整 VM 配
置文件:
①大家根据电脑系统的位数,选择 32 位的 VM 配置文件或者 64 位的 VM 配置文件 ②32 位操作系统内存不会超过 4G,所以没有多大空间可以调整,建议不用调整了 ③64 位操作系统中 8G 内存以下的机子或是静态页面开发者是无需修改的。 ④ 64 位操作系统且内存大于 8G 的,如果你是开发大型项目、Java 项目或是 Android 项目,建议进行修改,常修改的就是下面 3 个参数: 1、 -Xms128m,16 G 内存的机器可尝试设置为 -Xms512m (设置初始的内存数,增加该值可以提高 Java 程序的启动速度。) 2、 -Xmx750m,16 G 内存的机器可尝试设置为 -Xmx1500m(设置最大内存数,提高该值,可以减少内存 Garage 收集的频率,提高程序性能) 3、-XX:ReservedCodeCacheSize=240m,16G 内存的机器可尝试设置为 -XX:ReservedCodeCacheSize=500m(保留代码占用的内存容量)
查看设置目录结构:
- 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性,就是你删除掉整 个目录之后,重新启动 IntelliJ IDEA会再自动帮你生成一个全新的默认配置, 所以很多时候如果你把 IntelliJ IDEA 配置改坏了,没关系,删掉该目录,一切都会还原到默认。
config 目录:
-
config 目录是 IntelliJ IDEA 个性化化配置目录,或者说是整个 IDE 设置目录。此目录可看成是最重要的目录,没有之一,
-
如果你还记得安装篇的介绍的时候, 安装新版本的 IntelliJ IDEA 会自动扫描硬盘上的旧配置目录,指的就是该目录。
-
这个目录主要记录了:IDE 主要配置功能、自定义的代码模板、自定义的文件 模板、自定义的快捷键、Project 的 tasks记录等等个性化的设置。 比如:
system 目录:
- system 目录是 IntelliJ IDEA 系统文件目录,是 IntelliJ IDEA 与开发项目一个桥梁目录,里面主要有:缓存、索引、容器文件输出等等,虽然不是最重要目录, 但也是最不可或缺的目录之一。比如:
简单使用Demo
创建 Java 工程:
- Create New Project:创建一个新的工程
- Import Project:导入一个现有的工程
- Open:打开一个已有工程。比如:可以打开 Eclipse 项目。
- Check out from Version Control:可以通过服务器上的项目地址 check out Github上面项目或其他 Git 托管服务器上的项目
- 这里选择 Create New Project,需要明确一下概念:IntelliJ IDEA 没有类似 Eclipse 的工作空间的概念(Workspaces),最大单元就是Project。这里可以把 Project 理解为 Eclipse 中的 Workspace。
Module和Project的关系:
- IntelliJ IDEA 中 Project 和 Module的概念及区别
- 在 IntelliJ IDEA中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖。
- 通过这些Module的命名可以看出,它们都是处于同一个项目中的模块,彼此之间是有着不可分割的业务关系。因此,我们可以大致总结出:
一个Project是由一个或多个Module组成。 当为单Module项目的时候,这个单独的Module实际上就是一个Project;当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系。- 此外, IntelliJ IDEA 的Project是一个不具备任何编码设置、构建等开发功能的概念,其主要作用就是起到一个项目定义、范围约束、规范类型的效果,或许,我们也可以简单地理解Project就是一个单纯的目录,只是这个目录在命名上必须有其代表性的意义。在缺省情况下,IntelliJ IDEA 是默认单Project单Module的,这时Project和Module合二为一,在没有修改存储路径的时候,显然Project对Module具有强约束作用!不过说实话,这里就是将Module的内容放在了Project的目录下,实际上还是Module自己约束自己。
- 从 Eclipse 转过来的人总是下意识地要在同一个窗口管理 n 个项目,这在IntelliJ IDEA 是无法做到的。IntelliJ IDEA 提供的解决方案是打开多个项目实例,即打开多个项目窗口。即:一个 Project 打开一个 Window 窗口。
多module之间和引用外部项目一样,引入依赖进行通信。例如:
IDEA和Ecplise关于项目的关系:
- Eclipse中一个Workspace可以包括多个Project
- IDEA中一个Project可以包括多个Module。
也就是IDEA的Project等于Eclipse的Workspace。IDEA的Module等于Eclipse的Project。
如何删除模块:
- 此时的删除,会从硬盘上将此 module 删除掉。
设置显示常见的视图:
工程界面展示:
- 工程下的 src 类似于 Eclipse 下的 src 目录,用于存放代码。
- 工程下的.idea 和 project01.iml 文件都是 IDEA 工程特有的。类似于 Eclipse 工程下的.settings、.classpath、.project 等。
查看项目配置:
- 进入项目结构:
常用配置
目录结构如下:
Editor – File and Code Templates:
- 修改类头的文档注释信息
- 常用的预设的变量,这里直接贴出官网给的:
Editor – File Encodings:
- 设置项目文件编码:
①链接:properties乱码
- 说明:Transparent native-to-ascii conversion 主要用于转换 ascii,一般都要勾选,不然 Properties 文件中的注释显示的都不会是中文。 ①从官方文档上描述,选择properties编码格式和勾选Transparent native-to-ascii conversion这两个操作是二选一,并且不是特殊情况下,这个复选框都应该勾选。(nmb你就默认不勾选) ②如果勾选了复选框,那么前面的properties编码格式就无所谓了,因为Transparent native-to-ascii conversion这个功能会将我们输入的所有字符转换成Unicode序列码保存,例如我们输入“登陆”两个字符,实际上保存到properties时保存的是它的Unicode序列码。 ③所以这也是为什么设置properties编码格式无所谓的原因了,因为保存的字符都是ascii码表中的字符。 ④而当Java去读取properties时,也会将自动将\uxxx的Unicode转成对应的char。 ⑤虽然说设置properties编码格式的编码格式是无所谓的,但是我们还是要将他设置成UTF-8以防出现其他意外。 ⑥例如文件一开始是以GBK创建的,并没有勾选Transparent native-to-ascii conversion,后面再勾选上这个复选框时,不会自动将中文转成Unicode,而且我们也看不出来这个错误。 ⑦但是我们再将编码改成UTF-8时,我们就会发现乱码了,我们就知道其实这些中文并没有转成unicode。所以一般情况下我们需要同时设置文件编码为UTF-8并勾选复选框,或者设置文件编码为ISO-8859-1也是可以的。 ⑧但是无论如何,Transparent native-to-ascii conversion是必须勾选的,除非你保证properties中不会出现ASCII以外的字符。
- 设置当前源文件的编码(可忽略):
- 对单独文件的编码修改还可以点击右下角的编码设置区。如果代码内容中包含中文,则会弹出如上的操作选择。其中: ①Reload 表示使用新编码重新加载,新编码不会保存到文件中,重新打开此文件,旧编码是什么依旧还是什么。 ②Convert 表示使用新编码进行转换,新编码会保存到文件中,重新打开此文件,新编码是什么则是什么。 ③含有中文的代码文件,Convert 之后可能会使中文变成乱码,所以在转换成请做好备份,不然可能出现转换过程变成乱码,无法还原。
设置快捷键(Keymap)
简介:
- 通过快捷键功能修改快捷键设置:
- 通过指定快捷键,查看或修改其功能:
- 导入已有的设置:
常用快捷键:
| 按键 | 作用 |
|---|---|
| Ctrl +H | 显示当前类的层次结构 |
| Ctrl +O | 选择可重写的方法 |
| Ctrl + I | 选择可继承的方法 |
Ctrl +Alt +v | 快速引进变量 |
| Ctrl +J | 插入自定义动态代码模板 |
ctrl +P | 方法参数提示显示 |
Alt + lnsert | 代码自动生成,setiget方法,构造函数等 |
Alt +Enter | IDEA根据光标所在问题,提供快速修复选择 |
| Ctrl+Alt+M | 选中将要抽取的代码块 |
| Ctrl + shift + +/- | 扩展/收齐所有代码 |
| Ctrl ++/- | 展开/收齐光标选中代码 |
| alt + 7 /Ctrl +F12(方便点) | 弹出当前文件(类)结构层(字段,方法) |
| Ctrl +前方向键/后方向键 | 等效于鼠标滚轮向前效果/滚轮向后效果 |
| shift + Enter | 开始新的一行 |
| Ctrl +左方向键/右方向键 | 光标跳转到当前单词的左/右侧开头位置 |
| Ctrl + shift + Enter | 自动结束代码,行末自动添加分号 |
| shift +F9 | 等效于点击工具栏的Debug按钮 |
| shift + F10 | 等效于点击工具栏的Run按钮 |
| shift +F6 | 对文件 / 文件夹 重命名 |
| Ctrl +F4 | 关闭当前编辑文件 |
| Ctrl + Shift +/ | 代码块注释 |
Ctrl +/ | 注释光标所在代码,根据不同文件类型用不同注释 |
Ctrl +E | 显示最近打开的文件记录列表 |
| Ctrl +Alt +L | 格式化代码,可以对当前文件和整个包目录使用 |
| Ctrl +shift +J | 自动将下一行合并到当前行末尾 |
| ctrl + shift +u | 对选中的代码进行大/小写轮流转换 |
| ctrl + shift +T | 对当前类生成单元测试类 |
| ctrl+Alt+T | 可以把代码包在一个块内,例如: try i catch |
ctrl +光标定位 | 按CtrL不要松开,会显示光标所在的类信息摘里 |
| Ctrl +D | 复制光标所在行并把复制内容插入光标位置下面 |
Ctrl +c | 复制光标所在行 |
Ctrl +x | 剪切光标所在行 |
| Ctrl +Y | 删除光标所在行 |
Ctrl +N/连按两下shift | 根据输入的类名查找类文件 |
Ctrl +Z/Ctrl+shift +Z | 撤销/取消数销 |
| Ctrl +W /Ctrl+shift + W | 递进式选择代码块/递进式取消选择代码块 |
| home/end | 行首/行末 |
Ctrl + Alt+左/右方向键 | 退回/前进到上一个操作的地方 |
| Ctrl + Alt+左/右方向键 | 在查找模式下,跳到上个/下个查找的文件 |
Ctrl+ F/Ctrl+shift +F | 在当前文件进行文本查找/整个项目查找 |
Ctrl+ R/Ctrl+Shift + R | 在当前文件进行文本替换/整个项目替换 |
| crtl +shift +v | 教你如何复制粘贴最近五次文本 |
| Ctrl +左键单击 | 在打开的文件标题上,弹出该文件路径 |
| Crtl + Alt + (shift) +u | 查看 Diagram图形的类层次结构图 |
| Alt +F7 | 快速查看方法,类,变量在哪里被调用 |
| Ctrl+Tab | 切换窗口 |
| Ctrl +Alt +H | 调用层次 |
| Ctrl +shift +H | 显示方法层次结构 |
| Ctrl+Shift+` | git的branch界面 |
| Ctrl + K | git commit提交 |
| Ctrl + Shift + K | git push推送 |
| Ctrl +F10 | tomcat的update更新界面 |
git解决冲突窗口左上角 | git解决冲突快捷键 |
| →←↑↓ | Idea目录的开启关闭以及往上往下 |
关于模板(Templates)
简述:
- (Editor – Live Templates 和 Editor – General – Postfix Completion)
- Live Templates(实时代码模板)功能介绍: ①它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子就是在 Java 中输入 sout 会出现 System.out.println();
- 已有的常用模板:Postfix Completion 。
- 二者的区别:Live Templates 可以自定义,而 Postfix Completion 不可以。同时,有些操作二者都提供了模板,Postfix Templates 较 Live Templates 能快 0.01 秒
- 如果对于现有的模板,感觉不习惯、不适应的,可以修改现有模板:Live Templates
- 举例: ① psvm : 可生成 main 方法 ②sout : System.out.println() 快捷输出 类似的: soutp=System.out.println("方法形参名 = " + 形参名); soutv=System.out.println("变量名 = " + 变量); soutm=System.out.println("当前类名.当前方法"); “abc”.sout => System.out.println("abc"); ③fori : 可生成 for 循环 类似的: iter:可生成增强 for 循环 itar:可生成普通 for 循环 ④ list.for : 可生成集合 list 的 for 循环 List list = new ArrayList(); 输入: list.for 即可输出 for(String s:list){ } 又如:list.fori 或 list.forr ⑤ifn:可生成 if(xxx = null) 类似的: inn:可生成 if(xxx != null) 或 xxx.nn 或 xxx.null ⑥ prsf:可生成 private static final 类似的: psf:可生成 public static final psfi:可生成 public static final int psfs:可生成 public static final String
创建 Java Web Project
简述:
- 创建的静态 Java Web
- 创建动态的 Java Web
- 注意:IDEA17版本后不用web.xml改用注解了。
关联数据库
简述:
- 关联方式:
- 表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的 Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等等
- 常用操作:
图标 1:同步当前的数据库连接。这个是最重要的操作。配置好连接以后或通过其他工具 操作数据库以后,需要及时同步。 图标 2:配置当前的连接。 图标 3:断开当前的连接。 图标 4:显示相应数据库对象的数据 图标 5:编辑修改当前数据库对象
版本控制(Version Control)
简述:
- 不管是个人开发还是团队开发,版本控制都会被使用。而 IDEA 也很好的集成了版本控制的相关结构。
- 很多人认为 IntelliJ IDEA 自带了 SVN 或是 Git 等版本控制工具,认为只要安装了 IntelliJ IDEA 就可以完全使用版本控制应有的功能。这完全是一种错误的解读,IntelliJ IDEA 是自带对这些版本控制工具的插件支持,但是该装什么版本控制客户端还是要照样装的。
- IntelliJ IDEA 对版本控制的支持是以插件化的方式来实现的。旗舰版默认支持目前主流的版本控制软件:CVS、Subversion(SVN)、Git、Mercurial、Perforce、TFS。又因为目前太多人使用 Github 进行协同或是项目版本管理,所以 IntelliJ IDEA 同时自带了 Github 插件,方便 Checkout 和管理你的Github 项目。
- 关联 git.exe:
- 关联 GitHub 上的账户,并测试连接:
- 支持从当前登录的 Github 账号上直接 Checkout 项目:
- 本地代码分享到 GitHub:
Git 的常用操作:
- clone:拷贝远程仓库
- commit:本地提交
- push:远程提交
- pull:更新到本地
没有使用 Git 时本地历史记录的查看:
- 即使我们项目没有使用版本控制功能,IntelliJ IDEA 也给我们提供了本地文件历 史记录。
断点调试
Debug 的设置:
- 设置 Debug 连接方式,默认是 Socket。Shared memory 是 Windows 特有的一 个属性,一般在 Windows系统下建议使用此设置,内存占用相对较少。
常用断点调试快捷键:
- Idea的Debug快捷键:
①Step Over (F8): 步过,一行一行地往下走,如果这一行上有方法不会进入方法。
②Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法,如第25行的put方法。
③Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
④Step Out (Shift + F8): 步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
⑤Drop Frame (默认无): 回退断点。
⑥Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
⑦Evaluate Expression (Alt + F8): 计算表达式。
⑧resume program(F9):移动到下一个断点。
⑨Show Execution Point (Alt + F10): 如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。
| 是否可跳转 | 是否可进入自定义方法 | 是否可进入类库(类库为官方类库,不包括第三方依赖)方法 | |
|---|---|---|---|
| 步过 | ✖ | ✖ | ✖ |
| 步入 | ✔ | ✔ | ✖ |
| 强制步入 | ✔ | ✔ | ✔ |
- Debug调用器旁边的方框为方法调用栈:
当前运行类的全部调用过程,最下面是底层调用,最上面是上层调用。 - tomcat日志:
因为方法从最上面往里面调用,因此抛的异常也从最里面往外抛,所以最上面的日志为最里面的方法抛出来的。
Debug其他注意点:
-
问题:idea中debug报No executable code found at line:①原因: <1>主要是因为svn/git本身的问题 <2>编译的时候出现了未知错误导致部分内容没有编译 ②方法: <1>清除缓存:File —> invalidate Caches / Restart<2>重新编译:Build —> Rebuild project -
问题:debug下一步执行不正确,修改的代码没有起作用①原因:这里的问题大多是选项漏选,导致部分代码修改后不会重新编译。 ②方法:重新编译。 -
问题:debug只能进controller,不能进service①原因:service层代码没被编译。 ②方法:重新编译。 -
条件断点:①说明:调试的时候,在循环里增加条件判断,可以极大的提高效率,心情也能愉悦。 ②具体操作:在断点处右击调出条件断点。可以在满足某个条件下,实施断点。 ③查看表达式的值(Ctrl + u):选择行,ctrl + u。还可以在查看框中输入编写代码时的其他方法: -
Evaluate Expression窗口使用以及注意事项:①我们再用IDEA调试代码的时候,虽然很数值都可以显示出来,可有些东西还是看不到的,比如加载的mapper,xml,或者一些需要计算才有数值的东西。但我们可以通过 Evaluate Expression窗口进行查看。 -
多线程调试:①IDEA在Debug时默认阻塞级别是ALL,会阻塞其它线程,只有在当前调试线程走完时才会走其它线程。 ②而且tomcat中一个请求一个线程。 -
断点回退:①所谓的断点回退,其实就是回退到上一个方法调用的开始处,在IDEA里测试无法一行一行地回退或回到到上一个断点处,而是回到上一个方法。 ②回退的方式有两种: <1>一种是Drop Frame按钮,按调用的方法逐步回退,包括三方类库的其它方法(取消Show All Frames按钮会显示三方类库的方法)。 <2>第二种方式,在调用栈方法上选择要回退的方法,右键选择Drop Frame,回退到该方法的上一个方法调用处,此时再按F9(Resume Program),可以看到程序进入到该方法的断点处了。 -
中断Debug:①有些时候,我们看到传入的参数有误后,不想走后面的流程了,怎么中断这次请求呢(后面的流程要删除数据库数据呢....),难道要关闭服务重新启动程序?嗯,我以前也是这么干的。确切的说,我也没发现可以直接中断请求的方式(除了关闭服务),但可以通过Force Return,即强制返回来避免后续的流程。 -
异常断点:通过设置异常断点,在程序中出现需要拦截的异常时,会自动定位到异常行。 -
Field watchpoint(属性断点):读取或者修改属性时会激活属性断点 -
链接:
①一文搞懂如何在Intellij IDEA中使用Debug,超级详细!
②熟练使用IDEA的断点调试(Breakpoint)
③【IDE】【实战系列】掌握这些技巧发现阅读源码不过如此简单
Debug模式界面详解:
- 以Debug模式启动服务: 左边的一个按钮则是以Run模式启动,在开发中,我一般会直接启动Debug模式,方便随时调试代码。
- 断点: 在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。
- Debug窗口: 访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置。
- 调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。在菜单栏Run里可以找到同样的对应的功能。
- 服务按钮: 可以在这里关闭/启动服务,设置断点等。
- 方法调用栈: 这里显示了该线程调试所经过的所有方法,勾选右上角的[Show All Frames]按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法。
- Variables: 在变量区可以查看当前断点之前的当前方法内的变量。
- Watches: 查看变量,可以将Variables区中的变量拖到Watches中查看。
Tomcat工程部署
简述:
- 在 IDEA 中配置 Tomcat 之前,需要保证已经安装并配置了 Tomcat 的环境变量。(可以不配置环境变量)
- 下面看如何在 IDEA 中配置:
Tomcat配置中的On Upate Action 与 On Frame Deactivation:
- On Upate Action:手工触发(手动执行):手工触发需要按下面update更新这个按钮才可以实现上述功能。
①update resources ---- 更新静态的资源,比如html,js,css等 运行模式和调试模式都是立即生效。 ②update classes and resources ---- 更新java,jsp和静态资源 <1>java修改后,会被编译成.class然后覆盖到target/kao文件夹下,
IDE调试模式的情况下,立即生效。IDE运行模式下,不立即生效,需要redeployed才可生效。<2>jsp修改后,再次被访问的时候,会自动更新,重新编译成.java---->.class 保存在tomcat的work目录下。由于是访问时才检测是否修改,是否需要重新编译,所以 IDE 运行模式和 IDE调试模式下,都是立即生效。刷新下页面就可。 ③redeployed ----- 重新部署,发布到tomcat里,不重启tomcat,而是把原来的删掉,然后重新发布。 <1>修改web.xml 和context.xml 需要redeploy<2>修改javaBean,class并重新编译需要deploy④restart server ----- 重启tomcat,原来的部署还在。 <1>修改tomcat的server.xml 或在tomcat的lib下加入新的jar文件,需要restart server - On Frame Deactivation:idea失去焦点时做什么(自动执行):
①do nothing --------- 什么都不做
②update resources -------- 更新静态的资源,比如html,js,css等 运行模式和调试模式都是立即生效。
③update classes and resources -------- 更新java,jsp和静态资源( 1. java修改后,会被编译成.class然后覆盖到target/kao文件夹下,IDE调试模式的情况下,立即生效。IDE运行模式下,不立即生效,需要redeployed才可生效。2. jsp修改后,再次被访问的时候,会自动更新,重新编译成.java---->.class 保存在tomcat的work目录下。由于是访问时才检测是否修改,是否需要重新编译,所以 IDE 运行模式和 IDE调试模式下,都是立即生效。刷新下页面就可);
- 这样设置是最佳的选择, 理由:
①On frame deactivation IDE失去焦点的情况下 自动触发,而开发过程中可能需要查询资料 或 与人聊天或干其它事,IDE会不停的失去焦点。而每次失去焦点就自动触发 update ,这样就会占用CPU内存空间,电脑运行效率就会变慢,因此设置为Do nothing 最好,官方也默认的是 Do nothing。
②On Update action ------- update classes and resources ----- 运行模式下(jsp立即生效,java 需要redeploy才可生效) On Update action ------- update classes and resources ----- 调试模式下(java、jsp 都立即生效)。
③而对于resources静态资源在 update classes and resources都是生效的。
Mark Directory as 下的文件夹分别代表的含义:
-
Sources roots:通过将文件夹加入这种类别,来告诉IntelliJ IDEA,这个文件夹和它的子文件夹中包含源码,在构建工程时,需要作为一部分被编译进去。
-
Test Sources root:这个类型的文件夹也用于存放源码,不过是测试的源码(比如单元测试)。test source 文件夹可以帮助你将测试代码和产品代码分离开。
-
Resources Root:该类文件夹用于存放你的应用中需要用到的资源文件(如:图片、xml或者properties配置文件等)。
-
Test resources Root:(只有在java模式中可以使用)用于存放测试源码中关联的资源文件。除此之外,和resource文件夹没有区别。
-
Excluded:是IntelliJ IDEA“几乎忽略”的根。为Excluded roots中的文件提供了非常有限的编码帮助。Excluded roots中包含的类不出现在代码完成建议列表中,对这些类的引用在编辑器中显示为未解析。搜索时,IntelliJ IDEA不会查找排除的文件夹等。 使排除内容“不太重要”的文件夹可以提高IDE性能。 通常排除的是编译输出文件夹。
-
注意:默认情况下,工程编译后,Resources中的文件和文件夹会被放置在和源码编译后相同的文件夹中(即classes文件夹中),所以如果在源码中以相对路径读取resources中的配置文件时,可认为src中的java文件夹和Resources为同一个根目录。
Spring配置文件简介:
- 问题描述:创建的maven项目,右键new ->XML Configuration File 时,无Spring
Config选项。即没有下图中的选项
- 解决方法:导入spring-context的依赖
Project Structure
Project Structure简介:
- Project Structure分为: ①Project ②Modules ③Libraries ④Facets ⑤artifacts ⑥其他选项
- idea的部署方式: ①编译,IDEA在保存/自动保存后不会做编译,不像Eclipse的保存即编译,因此在运行server前会做一次编译。编译后class文件存放在指定的module编译输出目录下。 ②根据artifact中的设定对目录结构进行创建; ③拷贝web资源的根目录下的所有文件到artifact的目录下; ④拷贝编译输出目录下的classes目录到artifact下的WEB-INF下; ⑤拷贝lib目录下所需的jar包到artifact下的WEB_INF下; ⑥运行server,运行成功后,如有需要,会自动打开浏览器访问指定url。
- 连接:解决Idea导入Web项目并发布到Tomcat问题
Project配置项:
- 一般情况下,打开之后第一个默认选中的显示内容便是Project了。重点看一下图中的1、2、3、4项。
- 第一项,Project name,项目名。就个人而言,一般会将此处的项目名与项目目录名和pom文件中的name三处保持一致。避免不一致,同时也避免IDEA在左侧会显示多个名称标识。如果打开的是一组项目,比如都说springboot的项目,此处本人会改为类似springboot-all这样的名称,而不是其中一个(默认是第一个)项目的名称。
- 第二项,Project SDK。配置项目的SDK使用,这项平时使用的比较多,比如新打开一个项目,要查看一下SDK版本是否与预期的一致。也可以在右边的Edit进行SDK的编辑。此处点击编辑会跳到Platform Settings中的SDKs处进行操作。此处看一下图,操作比较简单,就不展开了。
- 第三项,Project language level。选择要支持的Java语言级别。如果是多个Module(可以理解为一组项目)的话,对所有Module生效。不同的JDK版本选择,对代码的语法有一定的影响,比如选择JDK8以前的版本,那么代码中有基于Lambda的语法将会报错。目前使用最多的当属JDK8了,当然如果你的项目比较古老或比较新,也可以选择其他的版本。
- 第四项,Project compiler output。指定IntelliJ IDEA将存储编译结果的路径(一般创建一个out文件夹)。针对单个项目,可以在配置一个输出路径,同时也可以在后面提到的Module中进行独立配置。但对于多个Module项目时,会出现大家共用一个output目录。此时如果输出的日志文件路径用“./log”这种形式时,日志可能并不会打印到其中的子项目中,而是输出在此处指定的路径下了。
Modules配置项:
- Modules中的配置用的比较多的情况就是一组项目时,可以配置独立每个项目的参数。包括项目名称,目录结构,输出路径,依赖等。
- 下面分析一下图中标注的四项内容,其中第三和第四项属于Source选项的子项。
- 第一项,加号可以导入、新增各类Module项目,当然后面的减号可以移除对应的项目。
- 第二项,项目名称,使用方式与前面的一致,也同样建议多处保持一致。
- 第三项,JDK版本,与Project中一样,但此处针对的是当前Module。
- 第四项,项目目录结构。对Module的开发目录进行文件夹分类,不同类型的文件进行指定的文件类型。上面分了Sources、Test、Resources、Test Resources、Excluded。 ①顾名思义,Sources放的是Java源码,Test放的是测试的源码,Resources放的是资源文件,Test Resources放的是测试使用的资源文件,Excluded是排除项(比如编译后的trarget目录)。 ②此处使用比较多的场景是新增文件夹。右击一个顶层目录,弹出“New Folder”创建目录,随后可以对新增的文件夹进行类型指定。常见的情况比如创建的项目没有test或Test Resources,可在此处进行添加目录,然后指定目录类型。 ③与Sources选项平级的还有Paths和Dependencies。这两项操作都比较简单,Paths用来指定编译输出路径。
- 此外还有Paths和Dependencies设置:
①Paths设置
<1>一般采用默认值即可。其中,Inherit projecty compile output path继承项目编译输出路径,使用为项目指定的路径。即在Project选项中设置的out文件路径。Use module compile output path,使用模块编译输出路径(一般创建一个target文件夹);Output path为编译输出路径;Test output path为测试代码编译输出路径。 <2>下面的JavaDoc使用可用控件组合与模块关联的外部JavaDocs存储位置的列表。不常用,就不具体演示了。 ②另外一个是Dependencies,主要配置jar包依赖相关的内容。
<1>这里同样可以配置JDK,还可以通过下面的加号引入其他依赖,同时还可以配置对应jar包所对应的Scope。 <2>
当编译报错时,例如已导入的jar包显示没导入,有可能是jar包加载顺序出现了问题,这时可以在此处(也就是Project Settings -> Modules -> Dependencies中)通过上下箭头调整jar加载顺序。<3>上面讲解了多处JDK配置的选项,如果在实战过程中出现JDK版本修改或不一致的问题,建议从头到尾查看一下各处JDK的版本是否有问题。
Libraries选项配置:
- Libraries选项卡里,可以定义模块SDK并形成模块依赖关系列表。
- 通过加号里面的操作可以创建一个新的项目库,可以设置分类,可以删除等操作。
Facets选项配置:
- Facets选项主要用来表示module的特征,比如Web、Spring、Hibernate等。这些Facets让Intellij IDEA知道怎么对待module内容,并保证与相应的框架和语言保持一致。
- 使用Facets能让我们下载并配置framework所必须的组件,会自动生成各种各样的描述符,并存储在适当的位置,等等。大多数Facets可以无冲突得添加到Module中。也有一些Facets是继承其他Facets的,这些Facets的添加就必须先添加他们的父Facets,这些Facets也要依赖Intellij IDEA的相关插件是否开启。
- 上图以SpringBoot项目为例,可看到项目的配置文件、启动类、MVC等相关特性。如果是web项目,还可以看到下面的一些信息(图片来源于网络)。
artifacts选项配置:
- Artifact是maven中的一个概念,是一个项目资源的组合体。这里表示module打包成什么形式,比如:war exploded、war、jar等;
- 一个 module 有了 Artifacts 就可以部署到应用服务器中了!
- 在给项目配置 Artifacts 的时候有好多个 type 的选项。
①
explode在这里你可以理解为展开,不压缩的意思。也就是 war、jar等产出物没压缩前的目录结构。建议在开发的时候使用这种模式,便于修改了文件的效果立刻显现出来。默认情况下,IDEA 的 Modules 和Artifacts 的 output 目录 已经设置好了,不需要更改。 注意:当不缺失jar包但却报错缺失jar包时可能是available element中的lib文件夹没有put into output root。- 打成 war 包 的时候会自动在 WEB-INF 目录 下生产 classes 目录 ,然后把编译后的文件放进去。
其他选项简述:
- 关于其他选项就不多说了,不太常用。
- 其中,SDKs选项为系统开发工具,全局SDK配置,新增JDK版本什么的都可以在此配置。
- Global libraries是全局类库,可以配置一些常用的类库。
- Problems在项目异常的时可以根据提示进行项目修复(FIXED)。
配置 Maven
简述:
- Make -> Ant -> Maven -> Gradle
- Maven 是 Apache 提供的一款自动化构建工具,用于自动化构建和依赖管理。开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为 Maven使用了一个标准的目录结构和一个默认的构建生命周期。在如下环节中,Maven使得开发者工作变得更简单。
- 构建环节:
①清理:表示在编译代码前将之前生成的内容删除 ②编译:将源代码编译为字节码 ③测试:运行单元测试用例程序 ④ 报告:测试程序的结果 ⑤打包:将 java 项目打成 jar 包;将 Web 项目打成 war 包 ⑥安装:将 jar 或 war 生成到 Maven 仓库中 ⑦部署:将 jar 或 war 从 Maven 仓库中部署到 Web 服务器上运行
Maven 的配置:
- Maven home directory:可以指定本地 Maven 的安装目录所在,因为我已经配置了 M2_HOME系统参数,所以直接这样配置 IntelliJ IDEA 是可以找到的。但是假如你没有配置的话,这里可以选择你的 Maven安装目录。
①
此外不建议使用 IDEA 默认的。②idea中maven自带Bundled (Maven2)和Bundled (Maven3)的文件目录位置在idea安装的plugins目录中:<1>假设idea安装目录为:D:\work\ideaIU-2017.3.1.win
<2>Bundled (Maven 2)的目录为:D:\work\ideaIU-2017.3.1.win\plugins\maven\lib\maven2 <3>Bundled (Maven 3)的目录为:D:\work\ideaIU-2017.3.1.win\plugins\maven\lib\maven3 - User settings file / Local repository:我们还可以指定 Maven 的 settings.xml位置和本地仓 库位置。
- Import Maven projects automatically:表示 IntelliJ IDEA 会实时监控项目的 pom.xml 文件, 进行项目变动设置。
- Automatically download:在 Maven 导入依赖包的时候是否自动下载源码和文档。默认是没有勾选的,也不建议勾选,原因是这样可以加快项目从外网导入依赖包的速度,如果我们需要源码和文档的时候我们到时候再针对某个依赖包进行联网下载即可。IntelliJ IDEA 支持直接从公网下载源码和文档的。
- VM options for importer:可以设置导入的 VM 参数。一般这个都不需要主动改,除非项目真的导入太慢了我们再增大此参数。
其它设置
生成 javadoc:
- 输入: ①Locale:输入语言类型:zh_CN ②Other command line arguments:-encoding UTF-8 -charset UTF-8
缓存和索引的清理:
- IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的 文件多少成正比。在 IntelliJ IDEA创建索引过程中即使你编辑了代码也是编译 不了、运行不起来的,所以还是安安静静等 IntelliJ IDEA 创建索引完成。
- IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度,所以 IntelliJ IDEA 的索引的重要性再强调一次也不为过。但是,IntelliJ IDEA 的索引和缓存并不是一直会良好地支持 IntelliJ IDEA 的,某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,很可能 IntelliJ IDEA 会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。即使没有断电、蓝屏,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出现了问题,这种情况还不少。遇到此类问题也不用过多担心。我们可以清理缓存和索引。如下:
- 一般建议点击 Invalidate and Restart,这样会比较干净。上图警告:清除索引和缓存会使得 IntelliJ IDEA 的 Local History 丢失。所以如果你项目没有加入到版本控制,而你又需要你项目文件的历史更改记录,那你最好备份下你的LocalHistory 目录。目录地址在: C:\Users\ 当 前 登 录 的 系 统 用 户 名.IntelliJIdea14\system\LocalHistory 建议使用硬盘的全文搜索,这样效率更高。
- 通过上面方式清除缓存、索引本质也就是去删除 C 盘下的 system 目录下的对应的文件 而已,所以如果你不用上述方法也可以删除整个system。当 IntelliJ IDEA 再次启动项目的 时候会重新创建新的 system 目录以及对应项目缓存和索引。
取消更新:
插件的使用:
- 在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都 是通过插件的方式来实现的。
- 官网插件库:plugins.jetbrains.com/
- 常用插件:
如何使用Favorites来管理项目中的常用代码:
- 链接:IntelliJ IDEA中favorites收藏窗口怎么新建
- 点击了tool windows选项之后,弹出了下一级菜单选中 favorites 选项
Idea本地历史:
- 选中被删除文件所在的项目
- 单击鼠标右键,找到Local History–>Show History
- 找到要恢复的文件并选中,右击找到Revert(回滚)恢复即可
Idea总结
安装完Idea后的环境搭建配置:
- Maven: ①File | Settings | Build, Execution, Deployment | Build Tools | Maven。 ②选版本,选配置文件 ,先本地仓库。
- Git: ①File | Settings | Version Control | Git。 ②选择启动脚本。
- 字符编码: ①File | Settings | Editor | File Encodings ②选择 UTF-8。
- 注解生效激活: ①File | Settings | Build, Execution, Deployment | Compiler | Annotation Processors ②勾选enable annotation processing。
- Java编译版本: ①File | Settings | Build, Execution, Deployment | Compiler | Java Compiler ②选择1.8。
- File Type 过滤:
①File | Settings | Editor | File Types。
②加入
*.iml,*.idea。 - Idea设置忽略大小写: ①File | Settings | Editor | General | Code Completion ②取消勾选Match case。
- 安装插件:
①File | Settings | Plugins
②插件:
<1>RestfulToolkit:搜索接口。
<2>JRebel and XRebel:热部署。链接:在IDEA中安装配置并使用Jrebel热部署插件
<3>Lombok:简化bean。
<4>Java Stream DebuggerStream:将操作步骤可视化。
<5>SequenceDiagram:一款不错的时序图生成工。
<6>Maven Helper: 方便maven项目解决jar冲突。
<7>Alibaba Guide检查插件:偏向于代码规范/安全规约方面的检查,由阿里巴巴手册扩展而来。
<8>SonarLint检查插件:偏向于代码质量、设计/隐藏的风险问题检查,包括代码标准规范、潜在缺陷、复杂度、重复、注释、糟糕的设计等。可以与Alibaba Guide检查插件结合使用。