JetBrains :IDEA入门与使用技巧分享

2023-11-17

本文假设读者已掌握基础的开发方式,了解常见的概念,只是刚入手IDEA,不熟悉工具的使用方式而已。
本文编写于 2019年7月27日

一 、 准备

以下是本文使用到的工具

工具与环境
IntelliJ IDEA Ultimate 2019.2

各个不同版本之间的差异

版本 说明
Ultimate (收费) 推荐使用 **Ultimate **, 如果是学生可以使用学生邮箱,能免费使用JetBrains全家桶。
Community(免费) 如果不希望再此工具上花费可以选择社区版 Community,但功能上不及Ultimate,可能你在本文中会发现有些功能在Community找不到
EAP(免费) 如果不想花钱,但又想使用最新最全的功能,可以使用EAP版本,这个是早期开发版本,可能存在严重BUG,而且每个月需要重装一次,但是不用钱就能享受最新的功能

二、 开始

2.1 创建项目

工具的安装完全没有任何难度,安装完成后,桌面会有IDEA 的图标 , 移动你的鼠标并点击它。 选择 Create New Project
图片

我们选择创建 Maven项目, 右边会有很多模板,具体是有什么用等你需要的时候就会知道了,现在我们不需要模板,直接Next
图片
输入三要素 Next

告诉idea你要把项目保存到硬盘的哪个位置上,并且给这个项目起个名字,我这里叫newproject
图片

完成。

2.2 常用的配置讲解

2.2.1 主题配置

Theme 可以选择不同的配色主题
Use custom font 是指程序UI的字体 size 是字体大小,1080p下建议12~13

图片

Background Image 能配置背景图

图片

2.2.2 快捷键设置

如果你是从eclipse 转过来, 刚开始肯定十分不习惯idea的快捷键, 因此可以选择使用eclipse的快捷键模式,当然有其他选择,如果你熟悉Sublime什么的。

图片

2.2.3 编码界面字体大小设置

图片

2.2.4 自动包导入优化

勾上后可以去掉无用的包引用
图片
不过速度比较慢,一般可以在提交代码前手动进行一次优化,右键目标文件夹 --》Optimize Imports

2.2.5 文件模板设置

新创建的文件将会按照这里的配置来生成指定内容, 例如下图是class文件生成的固定内容
图片

2.2.6 项目编码设置

有时候打开项目看到乱码,你就需要来这里设置下全局的编码设置,有Global Encoding 和 Project Encoding
图片

2.2.7 快捷模板

非常非常好用的一个功能, 快捷模板是什么呢 , 比如你想输入
System.out.println***()***;
在idea 中, 你只需要输入 sout 即可生成出来, eclipse 也有类似的功能。
你可以在Editor --》 Live Templates 中找到相关系统自带的模板,也可以新建自己的模板,
例如 下图所示 输入 ps 就可以自动生成
private String ;

图片

2.2.8 插件市场

各种骚插件,能让你的IDEA变得更强大,如果在IDEA中安装插件失败,你可以选择到官网下载plugin,然后选择从硬盘中安装
图片

2.2.9 Version Control 版本控制

IDEA 是一个强大的开发工具,集成的很多开发需要用到的东西,版本控制是其中一种,你能够不离开IDEA进行代码的commit 、 pull、push等git操作,但我个人不习惯在IDEA上做版本控制,有兴趣的可以自己深入了解下。

2.2.10 编译和部署相关

在Build Execution Deployment 标签下, 是有关于编译和部署的相关配置

2.2.11 Maven 配置

选择你的maven 程序, 我这里选择的是IDEA捆绑的MAVEN程序,设置好自己的配置文件和选择仓库的位置。
图片

2.2.12 Java 编译选项

在此处你可以选择项目用何种JDK版本取编译,以及编译参数的设定
图片


三、 使用

3.1 Project 与 Module 概念

在IDEA中, Project 是一个项目中最顶级的结构, Project 是由一个或者多个 Module 组成。
比如实现一个电商项目,整个项目又有多个模块共同组成,好比说:支付模块、商品信息管理模块、用户信息管理模块、后台管理模块,这在微服务架构中非常常见,每一个模块可以理解为一个Module ,这些 Module 的整合支撑起整个电商的项目运行。
你可能会想到eclipse 的Project , eclipse中的project 可以理解成一个工作空间, 可以包含多个不同的项目,例如电商项目、搜索引擎项目等。 在传统的开发模式中,项目可能由单个包支撑起来, 这时候在IDEA中就相当于单Module 的存在,所以如果你想在IDEA中一个窗口处理不同的事情, 记得要选择 new Module 而不是 new Project。

3.2 Project Structure

按图进入Project Structure
图片

这里都是项目结构相关的配置。
图片

  • **Project **可以配置 项目的JDK (非编译用JDK版本),还有编译文件输出路径
  • **Modules **项目中所有Modules的配置,同样可以指定JDK版本,还可以指定目录的属性,例如指定未资源目录或者源码目录
  • **Libraries **库,如果不用MAVEN管理,可以在这里手动导入第三方lib包
  • **Facets **一般由IDEA自动管理,不需要手动配置
  • **Artifacts **指定打包的方式,Build Artifacts 能够生成指定jar或者war等包
  • **SDKs **、 Global Libraries 顾名思义是SDK和java库的配置

3.3 配置Tomcat

点击 Add Configuration
图片

点击添加 , IDEA支持很多种容器,这里我们选择本地 Tomcat
图片

详细配置不作说明,但要注意几点

  1. 配置好ApplicationServer , 即选择Tomcat的路径
  2. Deploymen 选择在Project Structure中配置好的Artifacts ,要选择 WebApplication:Exploded ,以文件夹方式部署,这样好进行热更新。
  3. on ‘Update’ action 选择更新 class 和 resource
  4. on frame deactivation : 选择Do noting 因为如果不选择, 但你鼠标移出IDEA ,代码会被自动编译和更新 ,导致卡顿, 可以设置快捷键手动操作, 按Ctrl + s 再执行 update 操作。

配置完成后,选择运行方式就可以了
图片

3.4 打包

第一种方式是通过 build Arifacts , 打包出来的文件会在target目录下出现
图片

第二种方式是通过Maven ,在右侧点击maven ,选择操作,目标文件依然会出现在target目录下
图片


四、 技巧分享

4.1 DataBase

DataBase 可以对数据库进行操作,并且在使用Mybatis 时候能够提供自动补全的功能。

如果想更好的体验 JetBrains 带来的数据库工具,建议使用DataGrip ,一个非常强大的数据库管理工具,支持主流的数据库类型
图片

4.2 Linux 操作

IDEA能够集成的SSH SFTP 等功能选项 , 能够方便的在IDEA中进行文件上传下载,命令的执行,Shell脚本的编写等

4.2.1 SFTP

点击 Tools --> Delpoyment --> Configuration
图片

配置好连接信息
图片

再次点击Tools --> Deployment --> Browse Remote Host
图片

可以看到右侧导航栏多了个RemoteHost , 这里可以对文件进行上传和下载操作
图片

4.2.2 SSH

通过上面SFTP的配置 , 点击Tools --> Start SSH session ,然后选择你需要连接的服务器。
图片
另外, 如果在IDEA的终端查看Linux 日志,还能点击日志中的信息,直接跳转到报错的行,这对远程服务器的问题排查带来一定的便利性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JetBrains :IDEA入门与使用技巧分享 的相关文章

  • C# 与 JAVA 接口实例

    我不知道该如何回答我的问题 它是关于Android可以实例化接口的 我正在尝试用 C 来做 现在我非常确定 Java 和 C 的规则是不能创建抽象和接口的实例 但我很想知道Android是如何做到这一点的 在 Android 中你可以这样做
  • 将 allMatch、noneMatch 和 anyMatch 合并到单个流上

    我想要以下逻辑 我知道它不起作用 因为它多次消耗流 但我不知道如何实现它 Stream
  • string.split("(?!^)") 解释

    我正在尝试将字符串的字符拆分为字符串数组 我找到了解决方案here https stackoverflow com questions 5235401 split string into array of character strings
  • Java selenium - 如何在 TimeoutException 之后正确刷新网页?

    ChromeOptions options new ChromeOptions options addExtensions new File extension 6 2 5 0 crx ZenMate options addExtensio
  • 我需要在 Java 9 中使用哪个模块才能使用 JPA?

    我正在使用一个需要 JPA 的项目测试 Java 9 javax persistence 类 当我添加module info java并声明我的模块 下的所有类javax persistece包变得不可用 我搜索了很多 但找不到在 Java
  • 从SQLite列中获取所有数字字符串并进行总和计算

    我是 Android 和 SQLite 的新手 我在 SQLite 中有一个只有数字的 AMOUNT 列 我可以在 ListView 中显示它 但我无法找到任何我理解的方法来将它们全部添加并显示在 TextView 中 这是数据库助手 im
  • Mediaplayer 播放几次后停止播放

    我有一个按钮 按下它会播放一个随机声音剪辑 然后播放另一个声音剪辑 然后通过一个媒体播放器播放另一个声音剪辑 但是多次按下该按钮 15 20 次 后 所有音频都会停止 我在播放最后一个音频剪辑后释放媒体播放器 所以我不认为这是原因 有什么指
  • 如何访问EmbeddedSolrServer实例的管理界面?

    在我的网络应用程序中 我正在运行org apache solr client solrj embedded EmbeddedSolrServer出于调试目的 我想访问管理界面 这就是我实例化服务器的方式 new EmbeddedSolrSe
  • Java:等于和==

    让我们看看我们有 2 个对用户定义类实例的引用 即 Java 中的 a 和 b 会不会有一种情况 a b 但 a equals b 返回 false 当然 实施 equals 完全取决于班级 所以我可以写 class Foo public
  • 如何对 jar 文件资源使用 File.separator?

    我正在尝试读取位于 jar 文件中的属性文件 我想使用 File separator 因为应用程序将在多个平台上运行 我正在构建路径如下 jarFilePath jar file jarFile getAbsolutePath jarPro
  • 使用 SSL 和代理设置的 Rest 客户端获取连接超时

    我正在使用带有忽略 ssl 的 Rest 客户端 它工作正常 但在将来我尝试使用客户端证书进行的生产中将无法工作 我有 ca 证书和客户端证书 我用它创建了一个客户端 但我收到错误 Exception in thread main com
  • 在 Java 中生成 LaTeX 输出 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于从 Java 生成 LaTeX 输出的 Java 库 渲染乳胶 JLatex数学 https
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 从侦听器中修改 JFrame [重复]

    这个问题在这里已经有答案了 可能的重复 如何在框架可见后调用 setUndecorated https stackoverflow com questions 875132 how to call setundecorated after
  • 从 Java 应用程序读取的文件是否会调用系统调用?

    我的理解是 请求文件系统路径 例如 aFile 的用户应用程序将调用文件系统并获取所请求文件的虚拟地址 然后应用程序将尝试以该地址作为参数 即作为 CPU 指令 进行读 写操作 执行读取命令时 内存管理单元会将该地址转换为物理地址 并查看页
  • 莫基托。验证方法参数是特定类

    我有一个方法 void putObject
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • 隐藏 JTable 临时列

    我正在使用 JTable 显示数据库中的数据 现在我想通过 Jcombobox 过滤我的 jtable 我正在使用 Jcombo 框 其中包含 030 024 045 等值 这些值已在 jtable 中设置为列标题 当我单击组合时 选定的列
  • 为什么 OOP 中静态类的最佳实践有所不同?

    我目前正在阅读有关 Java 最佳实践的内容 我发现根据这本书 https rads stackoverflow com amzn click com 0321356683我们必须优先选择静态类而不是非静态类 我记得在 C 最佳实践中 我们
  • Bipush 在 JVM 中如何工作?

    我知道 iload 接受整数 1 到 5 但是如何使用 bipush 指令扩展到更高的数字 特定整数如何与字节码一起存储 有几种不同的指令可用于推送整数常量 最小的是iconst 指令 这些只是一个字节 因为该值是在操作码本身中编码的 ic

随机推荐

  • linux连接xshell失败,ping不通主机或虚拟机

    IPADDR新增的ip地址的网段一定要和默认网段相同 如下两个网段配置 设置完成后查看虚拟机的防火墙是否关闭 systemctl status firewalld 防火墙如果开启则需要关闭 systemctl stop firewalld
  • windows系统下ftp上传下载和一些常用命令

    windows系统下ftp上传下载和一些常用命令 先假设一个ftp地址 用户名 密码 FTP Server home4u at china com User yepanghuang Password abc123 打开windows的开始菜
  • Android动画系列之帧动画详解

    Android动画系列之帧动画详解 官方文档链接 Animate drawable 简介 逐帧动画就是一个接一个地加载一系列可绘制的资源来创建一个动画 这是一种传统的动画 从某种意义上说 它是由一系列不同的图像组成的 按照顺序播放 就像一卷
  • Fiddler抓包教程 ---> Fiddler如何证书配置与开启抓包完整详解

    一 安装fiddler和配置证书 fiddler默认是只抓取http协议 如下图 如果会话列表中的Host列中出现Tunnel to 字样都说明是证书的问题 这种就不能抓取到我们想要的会话 要想抓https协议 需要配置一下 操作方法如下
  • 重启:HTML的开始

    HTML 是一种文本标记语言 它的全称是 Hpyter Text Markup Labguage 文档声明 声明当前网页的版本 eg 这里不区分大小写 用于声明文档采用哪个版本的HTML进行编写 这里代表的是html5 注意 声明必须要放在
  • 一文读懂什么是进程、线程、协程

    进程 我们都知道计算机的核心是CPU 它承担了所有的计算任务 而操作系统是计算机的管理者 它负责任务的调度 资源的分配和管理 统领整个计算机硬件 应用程序则是具有某种功能的程序 程序是运行于操作系统之上的 进程是一个具有一定独立功能的程序在
  • fanuc机器人四边形编程_Fanuc焊接机器人编程小例子

    摘要 某个美国专家编的焊接程序 小例子 PROG PIPE 2SS1CC ATTR OWNER MNEDITOR COMMENT START STOP PROG SIZE 8121 CREATE DATE 10 11 25 TIME 14
  • axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例

    感兴趣的小伙伴 下面一起跟随512笔记的小编两巴掌来看看吧 实现全局loading加载 分析需求 我们只需要在请求发起的时候开始loading 响应结束的时候关闭loading 就这么简单 对不对 代码如下 import axios fro
  • oa项目经验描述_项目经验和总结

    去年 在一个大型项目 1500w 中用到Web Services 现在项目进入了尾声 所以对以前的开发经历做一个总结 我想大家一定会问 为什么你们项目中要用到Web Services 因为客户有如下需求 1 客户要求项目用C S架构 并且服
  • tomcat开启远程调试

    开启 tomcat 远程调试步骤如下 1 进入 tomcat 的 bin 目录 修改 catalina bat 脚本 添加如下语句 rem 开启远程调试 端口为 8000 SET CATALINA OPTS server Xdebug Xn
  • [1067]CDH6.3.2之Kerberos安全认证

    文章目录 Kerberos简介 Kerberos认证原理 Kerberos部署 Cloudera Manager平台上Kerberos的配置 在做此操作之前 请检查服务器时期是否正常 常用命令 登录Kerberos 创建Kerberos主体
  • 知识蒸馏论文翻译(9)—— Multi-level Knowledge Distillation via Knowledge Alignment and Correlation

    知识蒸馏论文翻译 9 Multi level Knowledge Distillation via Knowledge Alignment and Correlation 基于知识对齐和关联的多层次知识蒸馏 文章目录 知识蒸馏论文翻译 9
  • yum包管理器常见用法

    yum包管理器常见用法 yum源数据结构 yum源配置 yum config manager 快速添加 yum 源 自动寻找最快的yum源 仅支持Centos7 yum生成缓存 yum包管理器常用命令 RHEL8的yum yum软件仓库管理
  • 人脸识别从原理到实践

    目录 一 开箱即用 二 性能基线 三 训练 3 1 训练公开数据 3 2 训练自己的数据 四 视频教程 五 论文解读 引言 Loss 数据集 端上部署 人脸识别是目前深度学习领域应用最为广泛的领域之一 各大框架都有不错的开源项目 本文提供i
  • id注册

    直接在官网选择US就行了 然后就可以登陆
  • 剑指 Offer 07. 重建二叉树

    重建二叉树 思路 在前序遍历中找到根节点的值 然后在中序遍历中根据根节点的值划分左右子树 然后在左右子树里面递归调用同样的代码 再进行划分 package swordPointingToTheOffer import java util H
  • Centos设置nginx开机自启动

    第一步 进入到 lib systemd system 目录 root iz2z init d cd lib systemd system 第二步 创建nginx service文件 并编辑 vim nginx service 内如如下 Un
  • 抖音小程序实践四:实现小程序分享

    有时候我们要把一个小程序分享给别人 去看套餐 买东西之类的 是一个很常见的功能 但是在接入抖音小程序的时候 初始化右上角三个点并没有分享的入口 那看来不是要申请 就是有别的开发的口子了 下面我们一起了解下 从一个菜鸟的角度 我登录开发者后台
  • android 取消点击监听,Android中的活动中的软键盘打开和关闭监听...

    这仅适用于android 您的活动的windowSoftInputMode在清单中设置为adjustResize 您可以使用布局侦听器来查看键盘是否调整了活动的根布局 我为我的活动使用类似下面的基类 public class BaseAct
  • JetBrains :IDEA入门与使用技巧分享

    本文假设读者已掌握基础的开发方式 了解常见的概念 只是刚入手IDEA 不熟悉工具的使用方式而已 本文编写于 2019年7月27日 一 准备 以下是本文使用到的工具 工具与环境 IntelliJ IDEA Ultimate 2019 2 各个