IDEA

IDE

11

# 一、安装配置

# 1.1 Default plugins

初次安装配置Featured Plugins

  • Java Frameworks

    java常用框架,点击Customize来配置,只选择Spring相关的。

11

  • Build Tools

    项目构建工具,只选择maven。

  • Web Development

    web开发,只选择HTML、CSS、JavaScript。

  • Version Controls

    版本控制工具,只选择Git、GitHub、Subversion。

  • Test Tools

    测试工具,只选择JUnit。

  • Application Servers

    服务器,只选择Tomcat

  • Clouds

    云相关的,直接禁用Disable All

  • Swing

    Swing图形界面开发,直接禁用Disable All

  • Android

    安卓,直接禁用Disable All

  • Database Tools

    数据库连接工具,启用Enable

  • Other Tools

    其他工具,选择Terminal、UML、YAML

# 1.2 Settings配置

初始配置Settings

  • 白色主题

    File->Settings->Appearance & Behavior->Appearance

    然后设置Theme主题为Windows 10 Light主题即可设置为白色

    2

  • 关闭Intellij IDEA自动更新

    File->Settings->Appearance & Behavior->System Settings->Updates

    取消Automatically check updates for勾选 。

  • 隐藏.idea文件夹和.iml等文件

    IntelliJ IDEA项目会自动生成一个.idea文件夹和.iml文讲,看着实在是碍眼,所以对以上文件进行隐藏处理 。

    File->Settings->Editor->File Types

    ”Ignore files and folders”一栏添加:

*.idea;*.iml;logs;
1
  • 调整字体大小

    File->Settings->Editor->Font

    size设置为16

  • 文件编码设置

    File->Settings->Editor->File Encodings

Global Encoding:UTF-8
Projectt Encoding:UTF-8
Default encoding for properties files:UTF-8
勾选上Transparent native-to-ascii conversion
1
2
3
4
  • import 去掉*

File->Settings->Editor>Code Style>Java>Scheme Default>Imports

将Class count to use import with “” 由默认值改为比较大的值,如99

将Names count to use static import with “” 由默认值改为较大的值,如99

将Package to Use import with "*"删掉默认的这两个包(不管使用多少个类,只要在这个列表里都会变为 * )

  • 自动导入所有包

    File->Settings->Editor->General->Auto Import

    Insert imports on paste: **ALL**
    勾选 Add unambiguous imports on the fly:这个就是自动导入功能了,当你输入类名后声明就被自动导入了;
    勾选 Optimize imports on fly:自动优化包导入,移除不需要的包。
    
    1
    2
    3
  • Maven配置

    File->Settings->Build,Execution,Deployment->Build Tools->Maven

  • 生成serialVersionUID

    File->Settings->Editor->Inspections

    勾选 Java->Serialization issues->Serializable class without ‘serialVersionUID’
    
    1

    实现:将光标放到类名上按Atl+Enter键就会提示生成serialVersionUID了。

# 1.3 模板配置

# 类接口枚举注释

File->Settings->Editor->File and Code Templates

分别修改Class,Interface,Enum等注释模板,${DESCRIPTION}是自定义变量,会在创建类时请求输入,标识当前类/接口的说明。

类Class

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")
    package ${PACKAGE_NAME};
#end

/**
 * ${DESCRIPTION}
 *
 * @author ${USER}
 * @date ${DATE}
 * @version 1.0.0
 */
 
public class ${NAME} {

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

接口Interface

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")
    package ${PACKAGE_NAME};
#end

/**
 * ${DESCRIPTION}
 *
 * @author ${USER}
 * @date ${DATE}
 * @version 1.0.0
 */
 
public interface ${NAME} {

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

枚举类Enum

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")
    package ${PACKAGE_NAME};
#end

/**
 * ${DESCRIPTION}
 *
 * @author ${USER}
 * @date ${DATE}
 * @version 1.0.0
 */
 
public enum ${NAME} {

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 方法注释

File->Settings -> Editor -> Live Templates

第一步:新建自己的分组和自己的模板;

第二步:创建Live Template

3

说明:

  • Abbreviation为 *,

  • 关联文件,java

  • 模板如下:

*
 * 
 * 
 * @date $date$ $time$
 $params$
 $returns$
 * @author superC
 */
1
2
3
4
5
6
7
8

第三步:Edit variables配置变量如下:

4

  • params参数
groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {if(i==0){result+='* @param ' + params[i] + ': '}else{result+='\\r\\n' + ' * @param ' + params[i] + ': '}}; return result;}", methodParameters());
1
  • return参数
groovyScript("def result=\"${_1}\"; if(result == \"void\"){return \"\";}else{return \"* @return {@link \"+result+\"}\";}", methodReturnType())
1

第四步:使用

  1. 在方法上面键入/**;​
  2. 再点击tab,让idea自动补充模板的内容。

# 1.4 安装插件Plugin

安装其他常用插件Plugin

插件名称 插件介绍
GenerateAllSetter 一键生成 getter/setter
GenerateSerialVersionUID 一键生成序列化ID
POJO to JSON 一键复制实体类为Json格式(对实体类右键 -> MakeJson)
Properties to YAML Converter yaml转换
Lombok 简化getter/setter等
JRebel 热部署
Free Mybatis Plugin / MyBatisCodeHelper mybatis框架下mapper接口快速跳转对应xml文件
MyBatis Log Plugin / MyBatis Log Free mybatis SQL日志
JRebel mybatisPlus extension 在使用JRebel时修改mybatis-plus的mapper文件热部署生效
Statistic 代码统计插件
Rainbow Brackets 彩色括号
grep-console Console相关的插件,背景上色
Power Mode II 打字效果
CodeGlance2 代码小地图嵌入到编辑窗口
translation plugin 翻译插件
Alibaba Java Coding Guidelines 阿里巴巴编码规约
Maven Helper 辅助插件
Background Image Plus 设置背景图。插件安装完成后重启 IDEA,点击Help -> Find Action…,搜索 set background Image

# 1.5 JReble+XRebel

# 概念

  1. JRebel:热部署。

修改完代码,点击Build按钮进行编译,即可实现不重启服务就使代码生效。

使用Idea编写SpringBoot项目,实现热部署功能有两种方式:

  • 引入依赖spring-boot-devtools来实现springboot的自动热部署
  • 使用Idea插件Jrebel and XRebel for IntelliJ来实现热部署
  1. XRebel:请求接口时进行性能监控。

例如:方法执行时间,出现的异常,SQL执行时间,输出的Log,MQ执行时间等。

# 插件安装

下载安装:

File – settings – Plugins – Jrebel and XRebel for IntelliJ

# 激活

使用 jrebel.qekang.com网址进行激活,XRebel的方式激活和JRebel的一样。

1:通过该网址生成UUID:  https://www.guidgen.com/  

2:jrebel.qekang.com网址 拼上 UUID
https://jrebel.qekang.com/7b42efd0-6ecf-48be-809b-291774eeb84b

3:输入一个邮箱
110@qq.com
1
2
3
4
5
6
7

# 二、IDEA快捷键

# 2.1 Ctrl相关

快捷键 介绍
Ctrl + B 进入光标所在的方法/变量的接口或是定义处,等效于Ctrl + 左键单击
Ctrl + D 复制光标所在行或复制选择内容,并把复制内容插入光标位置下面
Ctrl + F 在当前文件进行文本查找
Ctrl + H 查看类的继承结构
Ctrl + N 通过类名定位文件
Ctrl + O 快速重写父类方法
Ctrl + P 方法参数提示
Ctrl + Y 删除光标所在行或删除选中的行
Ctrl + W 递进式选择代码块
Ctrl + Z 撤销
Ctrl + 1,2,3…9 定位到对应数值的书签位置 结合Ctrl + Shift + 1,2,3…9使用
Ctrl + F1 在光标所在的错误代码出显示错误信息
Ctrl + F12 弹出当前文件结构层,可以在弹出的层上直接输入进行筛选
Ctrl + Space 基础代码补全默认在Windows系统上被输入法占用,需要进行修改,建议修改为Ctrl + 逗号
Ctrl + / 注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号

# 2.2 Alt相关

快捷键 介绍
Alt + Q 弹出一个提示,显示当前类的声明/上下文信息
Alt + Enter 根据光标所在问题,提供快速修复选择

# 2.3 Shift相关

快捷键 介绍
Shift + F3 在查找模式下,定位到上一个匹配处
Shift + F6 重命名

# 2.4 Ctrl+Alt相关

快捷键 介绍
Ctrl + Alt + B 在某个调用的方法名上使用会跳到具体的实现处
Ctrl + Alt + L 格式化代码 可以对当前文件和整个包目录使用
Ctrl + Alt + M 快速抽取方法
Ctrl + Alt + O 优化导入的类和包 可以对当前文件和整个包目录使用
Ctrl + Alt + T 对选中的代码弹出环绕选项弹出层
Ctrl + Alt + V 快速引进变量
Ctrl + Alt + F7 寻找类或是变量被调用的地方,以弹出框的方式显示
Ctrl + Alt + 左方向键 退回到上一个操作的地方
Ctrl + Alt + 右方向键 前进到上一个操作的地方

# 2.5 Ctrl+Shift相关

快捷键 介绍
Ctrl + Shift + F 根据输入内容查找整个项目或指定目录内文件
Ctrl + Shift + H 查看方法的继承结构
Ctrl + Shift + J 自动将下一行合并到当前行末尾
Ctrl + Shift + N 通过文件名定位打开文件/目录,打开目录需要在输入的内容后面多加一个正斜杠
Ctrl + Shift + R 根据输入内容替换对应内容,范围为整个项目或指定目录内文件
Ctrl + Shift + U 对选中的代码进行大/小写轮流转换
Ctrl + Shift + W 递进式取消选择代码块
Ctrl + Shift + Z 取消撤销
Ctrl + Shift + / 代码块注释
Ctrl + Shift + + 展开所有代码
Ctrl + Shift + - 折叠所有代码
Ctrl + Shift + 1,2,3…9 快速添加指定数值的书签
Ctrl + Shift + F7 高亮显示所有该选中文本,按Esc高亮消失
Ctrl + Shift + Space 智能代码提示
Ctrl + Shift + Enter 自动结束代码,行末自动添加分号

# 2.6 Debug相关

快捷键 介绍
F8 Step Over:跳过,一行一行的向下走,如果当前行有方法不进入方法。
F7 Step Into:跳入,如果当前有方法,进入方法内部。
Ctrl + Shift + F7 Force Step Into :强制跳入,可以进入任何方法。
Shift + F8 Step Out:跳出,从跳入的方法内退出到方法调用处。

# 2.7 IDEA快捷键冲突

IDEA快捷键与其他软件发生冲突解决办法如下:

  • 全局搜索快捷键冲突(Ctrl +Shift+F)

Ctrl +Shift+F也是在开发中经常用到的,但是不知道为什么按了就是不起作用,原来是和输入法的简繁体切换冲突了。

解决步骤:

打开win设置(右键任务栏左下角微软的LOGO,单击设置);

点击时间和语言,区域和语言,中文,选项;

微软拼音,选项;

点击按键;

关掉简繁体输入切换。

  • 退回到下一个操作的地方(Ctrl +Alt+→)

Ctrl + Alt + →,退回到下一个操作的地方,与windows屏幕显示横向纵向旋转发生冲突。

解决步骤:

在桌面,右键选择英特尔显卡设置;

选择选项和支持

点击快捷键管理器

禁用快捷键。

# 三、IDEA+Docker

# 3.1 服务器开启docker远程访问

服务器需要开通2375端口,允许docker进行远程访问。

vim /lib/systemd/system/docker.service
1

修改ExecStart这行,如下:

ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock
1

重新加载配置文件

systemctl daemon-reload 
1

重启docker服务

systemctl restart docker.service
1

验证是否开通

# 查看端口是否开启
netstat -nlpt
# 直接curl看是否生效
curl http://127.0.0.1:2375/info
1
2
3
4

# 3.2 IDEA安装Docker插件

# 安装docker插件

在Plugins中搜索docker进行安装。安装后重启Idea。

# 配置服务器地址

File->Settings->Build,Execution,Deployment->Docker

进行如下配置。

# 3.3 win安装Docker

# 安装Docker

Install Docker Desktop on Windows | Docker Documentation (opens new window)

官方版本现在只支持4.18以上版本下载,如果想要选择其它版本或者低版本的话一般很难下载到。

下面把所有的Docker Desktop的版本号全整理出来了。

附(BD网盘):

  1. Docker Desktop4.X系列:链接:https://pan.baidu.com/s/1iqVSkxAjqcXxCjlbYaG2CA?pwd=nttu (opens new window) 提取码:nttu

  2. Docker Desktop3.X系列:链接:https://pan.baidu.com/s/14gKJ-w0uTyB2d2LeW0SMCQ?pwd=ibsk (opens new window) 提取码:ibsk

  3. Docker Desktop2.X系列:链接:https://pan.baidu.com/s/1QwAH6mXSbBRuymR3rqYfsg?pwd=dh0b (opens new window) 提取码:dh0b

下载安装包,进行默认安装。安装之后需要进行重启电脑。

Docker默认安装位置为:

C:\Program Files\Docker\Docker
1

docker、docker-compose命令所在位置

C:\Program Files\Docker\Docker\resources\bin\docker
C:\Program Files\Docker\Docker\resources\bin\docker-compose.exe
1
2

# 配置Docker Tools

File->Settings->Build,Execution,Deployment->Docker->Tools

把docker-compose-executable 设置为安装的docker-compose所在位置就行。

# 3.4 添加maven插件(暂不需要)

	<properties>
        <maven.docker.version>1.0.0</maven.docker.version>
        <docker.image.prefix>ccc-boot</docker.image.prefix>
    </properties>

    <build>
        <plugins>
            <!-- 生成docker镜像 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>${maven.docker.version}</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory></dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 3.5 运行Dockerfile

# 编写Dockerfile文件

文件所在位置:pom.xml所在路径。

Dockerfile

# 指定所创建镜像的基础镜像。该基础镜像来源于 DockerHub 注册服务器
FROM openjdk:8-jre
# 维护者
MAINTAINER superc
# 时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 挂载数据卷
VOLUME /app
# 复制上下文(context)目录下的xxx.jar文件到镜像的/app/app.jar,目标路径不存在会自动创建
COPY target/admin-1.0.0-RELEASE.jar /app/app.jar
# EXPOSE 功能为暴漏容器运行时的监听端口给外部,但是EXPOSE并不会使容器访问主机的端口。
EXPOSE 1004
# 创建容器时执行该命令。
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=test"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14

说明:

  1. jar包的版本需随着项目的更改而更改;
  2. 暴漏1004端口;
  3. 该文件指定spring运行环境为test环境;

# 将工程打包

  • 执行mvn clean package,进行编译打包。
  • 打包后会在target目录下生成jar包。
  • 生成jar包后,可以在本地启动服务,进行测试。
  • 测试无误后进行部署。

说明:

如果不需要进行测试jar包,该步骤可以省略,在配置Dockerfile中进行打包。

# 配置Dockerfile

Edit Configurations->Docker->Dockerfile

进入配置界面点击Docker,再点击+号,添加一个Dockerfile命令。

输入Name,选择Server,选择Dockerfile文件,输入镜像tag,完成配置。

配置构建之前执行的maven命令:

clean package -U -DskipTests
1

# 运行

配置完成后,执行此配置。

执行成功后,可以远程docker上,查看这个镜像;如果勾选了启动容器,则查看运行的容器。

# 3.6 运行docker-compose

# 编写docker-compose文件

文件所在位置:pom.xml所在路径。

docker-compose.yml

version: '3.3'
services:
    ccc-boot-admin:
        restart: unless-stopped
        build:
            context: .
            dockerfile: Dockerfile
        image: ccc-boot/admin:latest
        container_name: ccc-boot-admin
        network_mode: host
        volumes:
            - /usr/local/docker/services/ccc-boot/logs:/logs:rw
1
2
3
4
5
6
7
8
9
10
11
12

说明:

  1. 指定镜像的名称为ccc-boot/admin:latest;
  2. 挂载日志,指定目录;

# 编写Dockerfile文件

文件所在位置:pom.xml所在路径。

Dockerfile

# 指定所创建镜像的基础镜像。该基础镜像来源于 DockerHub 注册服务器
FROM openjdk:8-jre
# 维护者
MAINTAINER superc
# 时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 挂载数据卷
VOLUME /app
# 复制上下文(context)目录下的xxx.jar文件到镜像的/app/app.jar,目标路径不存在会自动创建
COPY target/admin-1.0.0-RELEASE.jar /app/app.jar
# EXPOSE 功能为暴漏容器运行时的监听端口给外部,但是EXPOSE并不会使容器访问主机的端口。
EXPOSE 1004
# 创建容器时执行该命令。
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=test"]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

说明:

  1. jar包的版本需随着项目的更改而更改;
  2. 暴漏1004端口;
  3. 该文件指定spring运行环境为test环境;

# 将工程打包

  • 执行mvn clean package,进行编译打包。
  • 打包后会在target目录下生成jar包。
  • 生成jar包后,可以在本地启动服务,进行测试。
  • 测试无误后进行部署。

说明:

如果不需要进行测试jar包,该步骤可以省略,在配置Dockerfile中进行打包。

# 配置docker-compose

Edit Configurations->Docker->Docker-compose

进入配置界面点击Docker,再点击+号,添加一个Docker-compose命令。

输入如下完成配置:

配置构建之前执行的maven命令:

clean package -U -DskipTests
1

# 运行

运行如下:

说明:

当点击停止后,服务器docker容器也随之stop。

# 四、IDEA FAQ

# 4.1 IDEA不识别某些模块

Q:

使用IDEA打开项目,某些模块无法识别为Maven项目。

W:

IDEA中的.iml文件是项目标识文件,缺少了这个文件,IDEA就无法识别项目。

使用命令重新生成iml文件,打开控制台,输入命令:

mvn idea:module
1

# 4.2 服务启动设置Services

在微服务开发过程中,我们经常要在本地启动很多个微服务,如果一个个在application启动类去启动肯定会很麻烦,效率很低,页面很乱,下面介绍下IDEA开发工具中得Services管理管理功能。

第一步

idea -> Views -> Tool Windows -> Services

第二步

点击之后,我们会发现下面的Sidebar多了一个Services,点击 “+” 号,选择Run Configuration Type,最后选择SpringBoot,IDEA就会把所有项目加进来了。

# 4.3 Error:Kotlin

IDEA启动编译报错:

Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16.
1

描述:模块是用不兼容的Kotlin版本编译的。

解决

重新编译项目,操作步骤:

Build->Rebuild Project
1