IDEA:问题解决与使用技巧

以下内容纯属个人扯淡,仅供参考

说明:IDEA版本号为:2019.3.5 Ultimate Edition

目录

插件

快捷键

源码阅读

svn使用

编译一个maven项目时,一般需要设置的

未识别为maven项目

类关系分析

工程缺少Jar包文件

引用本地jar包文件

JVM相关工具的简单使用

IDEA脱离SVN

maven编译

配置备份

工具基本设置


插件

插件名称作用WindowsMac
String Manipulation字符串操作

1、选中代码,鼠标右键,String Manipulation

2、删除空行:Filter/Remove/Trim,Remove empty lines

3、字母全部大写:Switch Case,To UPPER_CASE

Codota代码智能提示
Rainbow Brackets彩虹括号

1、所在括号内高亮:Ctrl+鼠标右键

2、所在括号外暗淡:Alt+鼠标右键

3、退出:Esc

1、所在括号内高亮:command

2、所在括号外暗淡:option

Lombok减少冗长代码

1、项目pom.xml添加坐标

2、使用@Data等注解

Key Promoter X快捷键提示
Maven Helper方便maven构建项目右键/Run Maven
CodeGlance代码编辑区缩放视图编辑框右方显示的

Free Mybatis plugin

MyBatisX

方便Mapper映射文件与Mapper接口跳跃编辑框最左边:→、←按钮
Grep Console终端日志信息颜色

1、勾选Foregroud

2、颜色组:

FATAL、ERROR:C71B00

WARN:CB7C00

INFO:76B309

DEBUG:808080(默认)

TRACE:000000(默认)

HexView
jclasslib Bytecode viewer
RestfulToolkit
Translation
Alibaba Java Coding Cuidelines代码规范Ctrl+Alt+Shift+J扫描
CanmelcaseOption+Shitf+U
Gsonformat
Arthas IDEA1、选中方法,鼠标右键:Watch、Trace
PlantUML Integration时序图绘制

快捷键

参考:IntelliJ IDEA中快捷键大全

注意:要检查与其他软件的快捷键冲突问题,例如:QQ、微信、输入法、音乐软件等

注意:大号加粗的,在阅读代码、寻找代码时非常有用

Ctrl

F/R

文件内搜索/替换文本内容

N

全局搜索(连续两下Shift也可以)文件名、方法、变量

H

类继承关系图。
Y、X、C、D

行级:删除、剪切、复制、复制当前行到下一行

F12

Alt+7的简单版/弹框版

E

最近的文件、操作(终端、版本控制)
鼠标左键

作用在编辑框文件名处:Show In Explorer,可以打开该文件所在路径任一级位置

Z撤销一次内容操作
Alt

7

查看当前类的结构,列出属性、方法等
反引号git/svn常用操作菜单
insert常用方法生成:get/set、toString、hashCode、构造器、equals等等
鼠标纵向选中文本
ShiftF6重构式重命名(变量名、文件名、目录名等)。即:右键菜单-Refactor-Rename
Tab反向Tab缩进
Ctrl+Shift

F/R

全局搜索/替换文本内容

(极易其他软件冲突)

Z取消撤销
U对选中内容,大小写切换

F8

在Debug模式下,指定断点的进入条件
Space智能代码提示
Alt+ShiftEnter

创建方法声明。用处:

1、写代码过程中,可以先写方法调用

2、使用该快捷键快速生成方法声明,使得不报错

3、有空了再去实现该方法的具体实现

当在接口处创建方法声明,而实现类会提示需要实现时也会有该提示,悬停会弹出提示

Ctrl+AltL格式化代码(选中内容、文件、目录)
O优化导入import(文件、目录)
V提取为局部变量(或者在末尾.var)
C提取为常量1
F提取为成员变量

←、→

返回上一步编辑处、进入下一步编辑处(MAC电脑时:Command+Shift)
Ctrl+Alt+ShiftS当前项目设置Project Structure(Ctrl+Alt+S打开Settings)
J阿里巴巴代码规范插件扫描

源码阅读

1、类关系分析

(1)尽可能的找到最顶层的接口或类,选中类名并Ctrl+H获取继承关系:

(2)选中所有的类,并Show Diagrams以图形化方式展示类关系

2、快捷键(阅读类)

见上面加粗的。有一个比较容易忽略的:

Ctrl + Alt + ←可以回到上一次编辑处,当使用Ctrl+鼠标左键进入某个方法查看代码完后,可以跳回入口

3、断点调试

除了设置断点并进入,下一步、进入、跳出等基本用法&快捷键之外,还有变量查看、计算表达式、智能步入、条件断点、多线程调试、回退断点、中断debug等。详见:IDEA--IDEA debug断点调试技巧

Git使用

忽略文件

简单操作

1、git pull

2、Rollback

3、git commit

4、git push

检出其他分支并切换

1、普通操作的入口

冲突及解决

1、发生时机

冲突发生的时机:代码合并时,git无法处理的矛盾,比如:对同一个文件同一位置的不同修改。那么什么时机又发生代码合并呢?目前来说本人碰到的:

1)背景:俩开发A、B都在develop这一个分支上开发,该分支目前记录是a-b-c

(1)初始状态

remote/develop、A的local/develop、B的local/deveop都为:a-b-c

(2)A先提交并推送成功了。

那么此时分支情况是:A的local/develop=a-b-c-d、remote/develop=a-b-c-d、B的local/develop=a-b-c

(3)B做了修改但提交会失败(会提示需要更新)

他需要先执行git pull拉取更新,将d这次提交的内容与自己的修改进行合并。那么此时就发生冲突了。

(4)B解决冲突再提交并推送。

那么此时分支情况是:A的local/develop=a-b-c-d、remote/develop=a-b-c-d-e、B的local/develop=a-b-c-d-e

(5)最后,A还要git pull更新

最终A的local/develop=a-b-c-d-e、remote/develop=a-b-c-d-e、B的local/develop=a-b-c-d-e,回到一致状态了

2)背景:每个开发负责自己的分支,A负责aaa分支,B负责bbb分支。他们在自己分支上开发自己所负责的模块、功能,开发完后一起合并到develop这一个分支上。目前记录都是a-b-c。此时项目涉及的分支情况:

(1)初始状态

remote/aaa、remote/bbb、remote/develop、A的localhost/develop、A的localhost/aaa、B的localhost/develop、B的localhost/bbb都为:a-b-c

(2)A做了修改,提交并推送;B也做了修改,提交并推送

由于是各自在各自的分支上操作,因此不会冲突

remote/aaa=a-b-c-m

remote/bbb=a-b-c-n

remote/develop=a-b-c

A的localhost/develop=a-b-c

A的localhost/aaa=a-b-c-m

B的localhost/develop=a-b-c

B的localhost/bbb=a-b-c-n

(3)A在本地把aaa合并到develop上

remote/aaa=a-b-c-m

remote/bbb=a-b-c-n

remote/develop=a-b-c

A的localhost/develop=a-b-c

A的localhost/aaa=a-b-c-m

B的localhost/develop=a-b-c

B的localhost/bbb=a-b-c-n

(4)A推送合并

2、

脱离版本控制

建议:不使用IDEA、SourceTree等图形化工具来学习使用Git

IDEA会把项目当做普通本地项目来对待:速度很快,增删文件时不会有弹框提示,修改时文件不会变为蓝色。下图这样选中后,选择后面的"减号"保存即可;当然使用后面的加号可以重新将IDEA与git关联起来

检出其他分支

入口1:IDEA工具右下角

入口2:鼠标右键

可以看到:目前所处分支是oracle-temp,本地有俩分支,远程也有俩分支

我们需要先执行git pull拉取所有更新,再使用check out检出

相当于建立local/oracle-temp本地分支;将local/oracle-temp与remote/oracle-temp关联起来;并切换到oracle-temp分支上。因此我们后续执行的提交、推送等会在该分支上进行

svn使用

注意:最佳实践建议并非在IDEA中使用svn。而是所有svn的操作(检出、更新、提交...)都使用TortoiseSVN等客户端软件,而对IDEA来说,让它和开发本地文件夹中的项目没什么差别。这种实践方式:可以将SVN相关操作集中到Tortoise里管理,而IDEA压根就不知道版本控制的存在,这样也不会影响IDEA的内存、性能等。同样,这种方式下,将无法体验到IDEA中友好的svn操作。总的来说:IDEA+SVN使用时特别卡。所以:

脱离版本控制

IDEA会把项目当做普通本地项目来对待:速度很快,增删文件时不会有弹框提示,修改时文件不会变为蓝色。下图这样选中后,选择后面的"减号"保存即可

当一次性涉及到大量的文件及文件夹(如:几百个)的操作时,如:从其他地方拷贝一个文件夹到项目里,这个文件夹中有几百个文件,这种情况下最好别用IDEA来提交,而是直接在window本地文件系统中使用TortoiseSVN来操作,用IDEA很容易卡在Perform VCS refresh...(卡到你爆炸)

1、配置SVN客户端工具

Settings
    Version Control
        Subversion

选定svn.exe的位置,我安装时按照默认的,所以位置如图所示

注意:安装TortoiseSVN工具时,一定要勾选安装命令行工具,否则是bin目录下是没有svn.exe的

2、设置忽略文件

1.为啥要设置忽略文件

在使用IDEA开发、编译、构建项目的过程中,会产生很多临时文件、IDEA相关的配置文件等等,这些文件都与项目本身不相关,不影响项目本身代码编译。但这些文件会疯狂提示你:是否需要将文件添加到版本控制库,导致IDEA卡死,根本动不了哇~~~

.idea实际上也不应该上传到svn,但为了让IDEA在检出项目到本地时能识别它是IDEA项目,因此一般.idea文件夹只是初始化版本库时上传一次,但以后每个开发人员检出到本地后,设置忽略文件不应该再上传.idea里的文件

如果不这样做的话,每次都会有大量的.idea文件上传/下载;但初始化时应该上传一次,否则检出到本地后需要为它创建为idea工程,这个的操作就像:使用IDEA从SVN检出eclipse工程一样的(IDEA识别为工程为idea工程需要项目根路径下有.idea、Xxx.iml文件,而eclipse是看.project文件是否有)

2.设置

IDEA对svn的支持和对git的不一样

Settings
    Editor
        File Types
            右下角:Ignore files and folders

我的值如下:

注意:我设置了target目录也在这里面,这是必要的。但这样的话如何要拷贝maven打包生成的jar、war包文件就得去系统目录中去找了。这也简单,随便选中一个文件鼠标右键,Show in Explorer即可打开本地文件夹了

*.classpath;*.gitignore;*.hprof;*.idea;*.iml;*.project;*.pyc;*.pyo;*.rbc;*.settings;*.sh;*.yarb;*~;.DS_Store;.git;.hg;.mvn;.svn;CVS;__pycache__;_svn;target;vssver.scc;vssver2.scc;

3、从SVN上检出idea项目

注意:在本步骤之前,一定要先设置好忽略文件,否则会卡到你爆炸

1.本地创建项目的父级目录,如:

D:\workspace-IDEA\bank\n200519

这个n200519并非项目根路径,只是为了表示是这一天创建的(个人习惯而已)

项目根路径:比如一个文件夹名为Xxx,其下有以下文件:.idea、src等

那么这个Xxx所在路径,我就叫它项目根路径,Xxx就叫项目文件夹名。这里面有.idea、.iml文件,说明这个项目本身就是由idea工具创建

2.版本库浏览获取项目路径

鼠标右键
    TortoiseSVN
        版本库浏览器

第1步创建的是项目根路径的父路径,因此这里通过版本库浏览器获取的项目路径,也是项目根路径的父路径,比如版本库中的文件是这样的

.../AAAAAA
    BBBBBB
        .idea
        src
        ...

那么,这步要拿的目标路径应该是:.../AAAAAA

3.检出

IDEA欢迎页
    Get from Version Control

输入第2步拿到的路径

确定后

在这里,1就是.../AAAAAA,2就是项目根路径/项目文件夹名,3就是项目的源文件

选中项目文件夹名并Check Out

指定到第1步所创建的文件夹

选择检出参数

选择1.8.format,正常情况下,进行到这就会开始从SVN服务器拉取代码到本地了,拉取完后你会发现本地文件目录如下

这里1就是第1步创建的文件夹,它并非项目文件夹名/项目根路径,其对应的是.../AAAAAA;2才是项目根路径,对应BBBBBB

4、一般svn操作

1.一般提交需要更新一下,我们假设从SVN上获取最新版本来更新本地代码库时不会发生冲突

对要更新的目标文件夹鼠标右键,这里我们选中整个项目的根路径进行更新
    Subversion
        Update Directory...

2.提交

对要提交的目标文件夹鼠标右键,这里我们选中整个项目的根路径进行提交
    Subversion
        Commit Directory...

由于前面设置了忽略文件,因此.idea等临时文件就不会到这个待提交框中

接下来就是IDEA的一顿分析、检查、确定等过程,笔者在:2019.2版本、2019.2升级到得2019.3版本,这两种情况下IDEA对svn支持太差,所有svn操作里,几乎只有更新是耗时较少的,提交根本就一直卡着,使用2019.2升级到2019.3版本也不行,同时直接使用2019.3是非常快的,后来我使用2020.1版本也是非常快的。

下面是点击commit后一些检查界面:这些检查若选择Review、Cancel就会取消提交

个人认为不需要这些,因为代码是否有问题应该由开发人员自己负责

3.冲突

冲突的发生时机

多人协作开发时所产生的歧义操作。

假设A、B、SVNServer三者目前代码都是最新的,全都同步一致

当A本地做了修改,B也在本地做了修改,这相当于实际工作时大家各自开发各自的模块
这时A将自己的修改提交到服务器,此时A、SVNServer的代码保持了一致

现在,B也需要提交代码了,他就需要尝试更新SVNServer代码到本地,此时假设大家都是各自改各自的模块、目录文件等,那么就不会发生冲突,B更新后直接提交即可,此时B、SVNServer的代码保持了一致

最后A开始工作前也更新一下代码,此时A、B、SVNServer三者代码又是最新的,并且同步一致

但是,当A、B修改了同一个文件的同一位置并做了不同的修改时,比如:二者都在pom.xml中的末尾添加依赖
那么在B做了自己的修改,准备从SVNServer去更新代码到本地时,IDEA工具就会提示产生了冲突,这个冲突需要
解决后,B所做的修改才能提交

4.要注意的问题

一般如果只是修改文件内容、新建类等操作,直接在IDEA中操作还可以。但如果是从其他地方拷贝文件到项目中时,最好在系统文件夹中操作,再添加到版本控制这样会快一点,同时IDEA中也会更新的。

如果拷贝文件到项目中、添加到版本控制等操作也在IDEA中做时,着实会有点卡

一句话:有些能在系统文件夹中完成的svn操作就不要在IDEA中去做

删除文件必须在IDEA中进行,删除文件夹时,要先删除其中的子文件、子文件夹(子文件夹中有文件时也先删除它的子文件),如果这些操作是要在系统文件夹中去做,那么IDEA同步信息是需要一定时间的。很可能的情况是,你在本地文件夹中删除一个文件,但是马上在IDEA中提交时,是没有更新信息的

总之:IDEA对于文件内容改动的信息同步其实还挺快的,但对于对文件结构造成影响的操作,如:添加、删除文件、文件夹等,特别是:几百个文件的一次性改动,这时你会发现如果你要做提交等操作时,会一直卡在:Perform VCS refresh...实际就是IDEA去同步文件改动信息实在太慢了,还要进行文件内容的错误校验

一句话:当设计一次性几百个文件的改动时,最好不要用IDEA去提交,否则会卡在Perform VCS refresh...

编译一个maven项目时,一般需要设置的

1、Settings

1、maven插件设置

指定maven插件:如果对maven版本没有敏感要求的,可以像下面示例使用的IDEA自带的Maven插件,版本=3.6.1。

选择完maven插件后,接下来就是要指定所使用的配置文件了。本人创建了3个maven本地仓库。

每个本地仓库一个配置文件,以jdk8Repository这个仓库为例

3个配置文件内容如下:

jdk7Repository/settings(其中有敏感信息的用*****************代替了

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <localRepository>D:/Develop/mavenRepositories/jdk7Repository/Repositories</localRepository>
  
  <mirrors>

    <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
     
  </mirrors>
  
  
  <profiles>
    <profile>
      <repositories>
        <repository>
          <id>nexus</id>
          <name>local private nexus</name>
          <url>http://maven.oschina.net/content/groups/public/</url>
          <releases>
      <enabled>true</enabled>
      </releases>
          <snapshots>
      <enabled>false</enabled>
      </snapshots>
        </repository>
      </repositories>
    <pluginRepositories>
    <pluginRepository>
      <id>nexus</id>
          <name>local private nexus</name>
          <url>http://maven.oschina.net/content/groups/public/</url>
          <releases>
      <enabled>true</enabled>
      </releases>
          <snapshots>
      <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
    </pluginRepositories>
    </profile>
  </profiles>

</settings>

jdk8Repository/settings

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

	<!-- 本地仓库 -->
	<localRepository>D:\Develop\mavenRepositories\jdk8Repository\Repository</localRepository>


<!-- 镜像库,可以指定内部中心库 -->
	<mirrors>
		<mirror>
			<id>alimaven</id>
			<name>aliyun maven</name>
			<url>http://maven.aliyun.com/nexus/content/groups/public/</url><!--外部私服-->
			<mirrorOf>central</mirrorOf>
		</mirror>
	</mirrors>

<!--个性配置,需要在Activation标签中激活 -->
	<profiles>
		<profile>
		<id>jdk8</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
		</activation>
		<properties>
			<maven.compiler.source>1.8</maven.compiler.source>
			<maven.compiler.target>1.8</maven.compiler.target>
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>
		</profile>
	</profiles>

</settings>

ztRepository/settings(其中有敏感信息的用*****************代替了

<settings>
    <offline>false</offline>
    <localRepository>D:/Develop/mavenRepositories/ztRepository/Repository</localRepository>
    <activeProfiles>
        <activeProfile>nj</activeProfile>
    </activeProfiles>
    <servers>
        <server>
            <id>snapshots</id>
            <username>deployment</username>
            <password>****************</password>
        </server>
        <server>
            <id>releases</id>
            <username>deployment</username>
            <password>****************</password>
        </server>
        <server>
            <id>site</id>
            <username>deployment</username>
            <password>****************</password>
        </server>
        <server>
            <!--仓库 ID-->
            <id>yihuazt-yihuazt-mvn</id>
            <username>mvn-1585894689560</username>
            <password>****************</password>
        </server>
    </servers>
    <pluginGroups>
        <pluginGroup>io.fabric8</pluginGroup>
        <pluginGroup>org.springframework.boot</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>nj</id>
            <properties>
                <profile.repository>****************</profile.repository>
                <profile.snapshotRepository>****************</profile.snapshotRepository>
            </properties>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
                    </snapshots>
                    <name>Nexus Repository</name>
                    <url>****************</url>
                </repository>
                <repository>
                    <id>ali</id>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                    <name>Nexus Repository</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                </repository>
                <repository>
                    <id>yihuazt-yihuazt-mvn</id>
                    <name>mvn</name>
                    <url>****************</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <releases>
                        <updatePolicy>never</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>nexus3</id>
                    <name>Nexus Repository</name>
                    <url>****************</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
</settings>

为什么要3个本地仓库呢?由于项目众多,通过配置文件可以看到jdk7Repository、jdk8Repository分别用于配置jdk7、jdk8的项目,ztRepository会连接企业maven私服,本人喜欢对任何东西都分类

比如现在有个jdk7的项目,除了这里maven的配置,下面的jdk版本都指定为jdk7。这里可以像下面这样配置:指定settings文件时勾选了Override但Local repository不勾选Override,这样IDEA会根据你settings中配置的本地仓库位置自动绑定

2、maven插件的其他设置

import(Sources、Documentation会下载jar包的src、doc,如果有看jar包源码的需求就勾选,没有就算了,这需要成倍的下载时间)

Runner

3、默认jdk

2、Project Structure

SDKs(如果没有就点击上方的+号进行添加,如果不添加那么在下面的Project、Modules就找不到jdk的配置了)

Project(也可以New添加新的jdk)

Modules指定模块的编译版本

3、修改maven/.settings.xml文件,在对应位置添加以下内容

<profile>
  <id>jdk-1.8</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>1.8</jdk>
  </activation>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  </properties>
</profile>

修改项目的pom.xml,添加

<properties>
 <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

未识别为maven项目

1、描述

使用SpringInitializer初始化项目,但打开项目后:pom.xml中的依赖未开始下载;IDEA右边侧栏未看到maven窗口;pom.xml文件图标显示不正常

2、解决办法

选中pom.xml文件,鼠标右键,"add as maven project"

类关系分析

1、"树形式"展示

选中类名,Ctrl + H

2、"图形式"展示

编辑框鼠标右键,Diagrams,Show Diagram...

具体使用技巧,参考:使用IntelliJ IDEA查看类的继承关系图形 - Dulk - 博客园

3、技巧

可以将上述方法结合使用,先以树形展示

再选中所有类(选中第一个,按住Shift,再选中最后一个)

再按图形展示

再在这个基础上去删除、添加类到这个关系图中

工程缺少Jar包文件

引用本地jar包文件

注意:如果你的项目是maven型,墙裂不建议你用这样的方法,因为会导致你本地开发调试没问题,但是maven打包时却不能将这个jar包打到你的目标jar/war包中。参考:IDEA使用Maven项目不能加入本地Jar包的解决方法maven-3.6.1:问题解决与使用技巧

然后选中引用你的jar包即可。注意:这是引用,而不是文件复制,因此当文件路径有修改时就会失效,需要重新指定

并且IDEA会给出提示:它指出这个模块是由maven导入的,因此这些配置可能会在重新导入maven项目时丢失

完成这些步骤后,该项目就能依赖上这个jar包了,此时Run/Debug运行是没有问题的了,但maven install打包后你会发现它无法被打入classpath里

JVM相关工具的简单使用

1、插件:HexView

十六进制查看class文件,选中class文件后选择Hex View即可

2、字节码文件分析

IDEA工具自带的,选中class文件

    

内容

3、插件:jclasslib

结果

IDEA脱离SVN

需求:我们希望与SVN相关的操作都直接使用TortoiseSVN、SyncroSVN等客户端操作,而开发编辑时只使用IDEA操作,在IDEA看来和普通的本地项目工程相同

好处:开发操作(编辑、编译、运行等)与SVN相关操作(更新、还原、提交等)相分离,和IDEA开发本地工程没什么两样。这样就不会在目录中把文件标识绿色、蓝色、红色等分别表示SVN文件状态(新增、修改、未受版本控制等);同时添加文件不会再有"是否要将新增的文件加入版本控制";并且,在重命名、删除、新增等操作时,IDEA就不会进行SVN检查,不会很卡(如果你在IDEA里使用SVN,一次性添加很多文件时IDEA会完全卡的原地爆炸)

坏处:一些SVN的操作,SVN客户端软件虽然也能完成,但是并没有IDEA做的那么人性化。比如说:当文件发生冲突时,IDEA会让你选择"选用自己本地的,放弃从服务器拉下来的别人的"(或者反过来)来解决冲突。而SVN客户端工具可能没这么好解决

使用SVN客户端检出代码到本地后,使用IDEA打开后默认会对项目启用SVN,这时需要做2个设置:

(1)不使用本地的svn.exe

只要不设置为正确的svn.exe位置即可

(2)删掉对项目的svn设置

如果黄框中有配置svn则使用"减号"删除即可

题外话:在这种分开使用方式下,提交、更新等操作时,需要进入到项目根目录里选中文件/文件夹进行操作,而不是在项目根目录名上去操作。原因:IDEA会在项目根目录下生成.idea目录,这是IDEA工程设置文件,一般在第一次上传项目代码时上传一次,或者不上传(这样的话会导致检出代码到本地后,使用IDEA打开它时需要建立项目)。不同的开发人员拉取项目到本地使用IDEA开发后,必定会修改.idea文件夹中的内容,因此如果.idea也使用SVN更新时,必定会发生冲突。(如果真的发生冲突,将.idea文件夹删除,再重新获取一份下来,重新打开项目即可)

maven编译

不再支持源选项5,请使用6或更高版本

解决办法:在pom.xml中指定jdk的版本即可

配置备份

尚未尝试

工具基本设置

注意:以下设置尽量是从IDEA欢迎页进入的Settings、Structure for New Projects...,这里进入设置,其实并非所谓的全局设置,按照本身的翻译应是"为新的项目设置",因此你每导入或新建一个项目时会遵守这些设置,感觉起来好像是"全局设置"而已

还有另外一个入口,在欢迎页上进入设置也是为新项目设置

参考:

IntelliJ IDEA 常用设置

IDEA_2019.2的安装与个人配置(Windows)

自动完成忽视大小写

自动导包

看需要是否开启。自动组织包看需要是否开启,开启后,当你注释了一段代码那么它的import也会被清理掉,可能后面又想开启时而又有多个同名类时你就不知道导哪个了。不建议勾上第2个,当注释有用的代码后若要重新启用代码则此时又要导入类

垂直或水平分组、多行Tab

编译时的堆内存设置

默认=700,建议多少呢?我设置为1000了

启动时设置

不打开最后一次关闭的项目、打开新项目时

关闭IDEA软件更新检查

允许鼠标滚轮调整字体大小

显示行数、方法分隔线

定位文件夹

看需要是否需要开启

我的做法并不开启这个选项,而是当需要定位这个文件所在文件夹时,手动使用定位按钮

项目文件编码

开启serialVersionUID警告

 java代码行注释风格

当使用Ctrl+/去注释代码时,"//"就会在代码首字母前而不是行首(由于勾选了Add a space,因此"//"与首字母还会再空一格)

字体

菜单栏字体,大小一般12、13、14即可

编译器字体:大小一般14、15、16

控制台字体

项目自动编译

配置插件代理连接

看需要是否设置

注意:如果第19步,你在plugins使用没有问题,不会出现打不开的情况,就不需要设置本步了

Settings
    Appearance & Behavior
        System Settings
            HTTP Proxy

选择Auto-detect proxy settings,并勾选:Automatic proxy configuration URL并填写

http://plugins.jetbrains.com/

重启IDEA

自定义注释

参考:

IDEA类和方法注释模板设置(非常详细)

Intellij IDEA 自定义方法注释/方法模板

Settings
    Editor
        Live Templates

(1)添加自定义注释模板组:privateGroup

(2)添加注释模板

属性注释:使用时,在属性变量上方,addf即可

/**
 *
 */

类注释:使用时,在类上方addt即可

/**
 * 
 *
 * @date $time$ $date$
 * @author 李文龙
 **/

方法注释:必须在方法体中使用才能生效

/**
 * 
 *
 * @date $time$ $date$
 * @param $param$
 * @return $return$
 * @author 李文龙
 **/

注意:必须要左边的红框都先设置完,再点击Edit variables进行设置变量,否则会异常

 折叠空包

不建议开启。而是在实际使用项目时点击左边的瞄准镜去定位当前编辑窗口的文件所在目录

 代码检查等级

不建议修改这个配置。一般设置为none,不检查

None: 不设置检查。
Syntax: 可以检查单词拼写,简单语法错误。
Inspections: 为最高等级检查,可以检查单词拼写,语法错误,变量使用,方法之间调用等。

省电模式

不建议开启。会关掉代码的检查、提示等功能

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值