mac上idea升级到2020.2.2后,发现version control中的local changes不见了!解决办法:

View—>Tool WIndows—>Commit【点击下,就会提示要把这个Commit放在IDEA面板那个位置,选择习惯的位置即可】

2020-9-18


设置todo:Settings-->Editor-->Live Templates-->如果没有,则 新增

IntelliJ IDEA常见问题解决办法汇总_idea

 

 

IntelliJ IDEA常见问题解决办法汇总_idea_02

 

 

IntelliJ IDEA常见问题解决办法汇总_plugins_03

 

 点OK就可以了

 

annotated("annotation qname")
注释(“注释属性”)
创建带有指定位置的注释的类型符号。例如,在迭代组中查看活动模板。
arrayvariable()
建议适用于当前范围的所有数组变量。例如,在迭代组中查看活动模板。
anonymoussuper()
提出一种科特林级对象表达类型。
сamelcase(字符串)
返回作为参数传递的字符串,转换为骆驼格。例如,我的文本文件/我的文档/ my_text_file将转换为mytextfile。
大写(字符串)
大写首字母的名称作为参数传递。
capitalizeandunderscore(scamelcasename)
利用CamelCase的名称作为参数传递的所有信件,并插入一个下划线之间的部分。例如,如果一个参数是要通过字符串,然后返回foo_bar。
casttoleftsidetype()
将右侧表达式投射到左侧表达式类型。它在迭代组中使用一个模板来生成原始类型和泛型集合。
className(sclassname)
返回当前类的名称(扩展模板的类)。
classnamecomplete()
这个表达式替换变量位置上的类名完成。
clipboard()
返回系统剪贴板的内容。
camelCase(字符串)
返回字符串的字符串snake_case camelCase。例如,如果一个参数是foo_bar通过字符串,然后返回foobar。
complete()
这个表达式替换了变量位置上的代码完成调用。
completesmart()
该表达式替代变量位置上的智能类型完成调用。
componenttypeof(<数组变量或数组类型>)
返回数组的组件类型。例如,在其他组中的迭代组中查看活动模板。
currentpackage()
返回当前包名。
日期(姓名)
以指定格式返回当前系统日期。默认情况下,当前日期是以默认的系统格式返回的。但是,如果在双引号中指定日期格式,日期将以这种格式呈现:
decapitalize(SNAME)
用相应小写字母替换作为参数传递的名称的第一个字母。
descendantclassenum(<字符串>)
显示类的子字符串作为参数输入。
枚举(scompletionstring1,scompletionstring2,…)
建议在模板调用中完成的逗号分隔字符串列表。
escapestring(sescapestring)
转义指定字符串。
expectedtype()
返回作为整个模板的结果所期望的类型。如果模板在赋值的右边,在返回之后扩展,则是有意义的。
文件名(sFileName)
以扩展名返回文件名。
filenamewithoutextension()
返回没有扩展名的文件名。
FirstWord(sfirstword)
返回作为参数传递的字符串的第一个单词。
groovyscript(“Groovy代码”)
用指定的代码返回Groovy脚本。
你可以使用多个参数的groovyscript宏。第一个参数是执行的脚本文本或包含脚本的文件路径。接下来的参数绑定到_1,_2,_3,…_n变量都可以在你的脚本。
同时,_editor变量可在脚本。此变量绑定到当前编辑器。
guesselementtype(<集装箱>)
对存储在一个java.util.collection元素类型的猜测。猜想,IntelliJ IDEA试图找到地方的元素被添加到或从容器中提取。
iterablecomponenttype(< arrayoriterable >)
返回一个组件类型,如数组或集合。
iterablevariable()
返回可以重复的变量的名称。
linenumber()
返回当前行号。
lowercaseanddash(字符串)
返回以破折号分隔的小写字符串,作为参数传递的字符串。例如,字符串转换为我的名字MyExampleName。
methodname()
返回拥抱方法的名称(在模板扩展的地方)。
methodparameters()
返回拥抱方法(扩展模板)的参数列表。
methodreturntype()
返回当前方法返回的值的类型(扩展模板的方法)。
qualifiedclassname()
返回当前类的完全限定名称(扩展模板的类)。明显缩短FQ名称”复选框。
rightsidetype()
用右侧表达式的类型声明左侧变量。它在迭代组中使用一个模板来生成原始类型和泛型集合。
snakecase(scamelcasetext)
从CamelCase返回snake_case字符串字符串作为参数传递。
空间分开(字符串)

 

 

idea配置代码模板的地方【只用配置includes即可,不用配置Files tab下的内容】:

Editor-> File and Code Templates->Includes


IntelliJ IDEA常见问题解决办法汇总_settings_04

 

This is a built-in template. It contains a code fragment that can be included into file templates (Templates tab) with the help of the #parse directive.
The template is editable. Along with static text, code and comments, you can also use predefined variables that will then be expanded like macros into the corresponding values. 
Predefined variables will take the following values:
${PACKAGE_NAME}

name of the package in which the new file is created
${USER}

current user system login name
${DATE}

current system date
${TIME}

current system time
${YEAR}

current year
${MONTH}

current month
${MONTH_NAME_SHORT}

first 3 letters of the current month name. Example: Jan, Feb, etc.
${MONTH_NAME_FULL}

full name of the current month. Example: January, February, etc.
${DAY}

current day of the month
${DAY_NAME_SHORT}

first 3 letters of the current day name. Example: Mon, Tue, etc.
${DAY_NAME_FULL}

full name of the current day. Example: Monday, Tuesday, etc.
${HOUR}

current hour
${MINUTE}

current minute
${PROJECT_NAME}

the name of the current project
Apache Velocity template language is used

 

 

IDEA默认用ALT+方向键左右是选择整个字符串,如果只是想根据驼峰来选择单个单词的话,需要改下配置:
Editor->General->Smart Keys->Use "CamelHumps" words

这时鼠标双击也是驼峰选择了,如果还想保留鼠标双击选择整个字符串,则配置:
Editor->General->取消选中‘Honor Camel Humps words settings when selecting on double click’
当然,如果还是想选择整个字符串的话,用ALT+方向键上下就行

 

 


IntelliJ IDEA常见问题解决办法汇总_settings_05

 

 reformat时,import记录的转换。

IntelliJ IDEA常见问题解决办法汇总_settings_06

 

 

idea在单元测试中设置JVM参数
运行一次测试用例,然后在工具栏中点 Run/Debug旁边的向下的小箭头:

选择Edit Configuration…

IntelliJ IDEA常见问题解决办法汇总_字符串_07


可以看到 VM Options 参数设置,并且可以指定具体的方法

IntelliJ IDEA常见问题解决办法汇总_idea_08



一定保存Apply,不然不会生效:

IntelliJ IDEA常见问题解决办法汇总_idea_09


 

市场插件

  • 阿里代码规约检测
  • 快捷键提示工具:Key promoter X
  • 代码注解插件: Lombok
  • 代码生成工具:CodeMaker
  • 单元测试测试生成工具:JUnitGenerator
  • Mybatis 工具:Free Mybatis plugin 【可让Mapper.java文件 关联到 mapper.xml中的方法】
  • Maven辅助神器:Maven Helper
  • JSON转领域对象工具:GsonFormat
  • 领域对象转JSON工具:POJO to JSON
  • 时序图生成工具:SequenceDiagram
  • 字符串工具:String Manipulation
  • 代码作色工具:Rainbow Brackets
  • RESTful 服务开发辅助工具集: RestfulToolkit
  • 日志工具:Grep Console
  • 生成对象set方法:GenerateAllSetter
  • Redis可视化:Iedis
  • K8s工具:Kubernetes
  • 中英文翻译工具:Translation

​https://mp.weixin.qq.com/s/xNSES7n_oMU4I4rwftQHiA​​IDEA插件介绍(一) -RestfulToolkit(接口自测工具)

1:官网
​​​http://plugins.jetbrains.com/plugin/10292-restfultoolkit​

2:工具介绍:
一套 RESTful 服务开发辅助工具集。

1.根据 URL 直接跳转到对应的方法定义 ( or Ctrl Alt N );
2.提供了一个 Services tree 的显示窗口;
3.一个简单的 http 请求工具;
4.在请求方法上添加了有用功能: 复制生成 URL;,复制方法参数...
5.其他功能: java 类上添加 Convert to JSON 功能,格式化 json 数据 ( Windows: Ctrl + Enter; Mac: Command + Enter )。
3:背景介绍:
因为我们公司开发模式为前后端分离,所以对接口文档要求较为苛刻,有时因开发任务多,接口文档无法及时提供,需要双方频繁沟通确认,为了解决这种现状,给大家安利一款插件,插件名为RestfulToolkit,能有效解决在无接口文档时,双方的联调工作。

4:安装

ctrl +alt +s  →settings

plugins →browse repositories

搜索框输入:RestfulToolkit →Install

安装完成后重启IDEA

下面为图示:

IntelliJ IDEA常见问题解决办法汇总_ide_10

IntelliJ IDEA常见问题解决办法汇总_字符串_11

安装完成后就是上面的样子。安装失败的请升级IDEA至18及以上版本。

功能演示:

安装后,右侧会有RestServices侧边栏,点击后会显示当前项目所有请求地址,可以进行输入查询,然后会直接把请求方式,地址以及参数列出来,默认请求服务器为本机(localhost:8080),可根据需求更改。

IntelliJ IDEA常见问题解决办法汇总_plugins_12

全局快捷搜索:Ctrl  \ 

同类工具对比的优缺点:
优点:

其他工具如:postman,DHC,jmeter等,此工具直接集成与项目,不需要输入地址以及多个参数,便能直接访问。

缺点:

无法保存,每次使用参数都需要重新赋值,且没有请求记录。

总结:
此工具适合做接口测试,以及敏捷开发时使用,真证前后端分离式开发,还需要写好接口文档

Idea 中解决maven 包冲突的问题(maven helper)

  • 首先安装插件 maven helper(因为我已经安装了,所以没 install 的按钮了) 
  • IntelliJ IDEA常见问题解决办法汇总_settings_13

  •  
  • 安装完成后,在 pom 文件下方会出现这个东西 
  • IntelliJ IDEA常见问题解决办法汇总_ide_14

  •  
  • 点进去你会发现仿佛回到了 eclipse 
  • IntelliJ IDEA常见问题解决办法汇总_settings_15

  • 接下来到重点了,选中冲突选项 conflicts,这一列都是存在冲突的包 
  • IntelliJ IDEA常见问题解决办法汇总_字符串_16

  •  
  • 以fastjson 为例 

    当然我们调错误的时候也可以直接搜索有问题的包,如下 
  • 选中右键就可以 Exclude 啦,想用1.2.28就把其他版本的Exclude掉,想用1.2.3就把其他版本的Exclude掉,是不是很方便。 
  • IntelliJ IDEA常见问题解决办法汇总_settings_17

  •  


idea中Eclipse Code Formatter插件设置和使用,以及注释模板的修改

在settings里面找到plugins这个选项,搜索Eclipse Code Formatter,点击安装,重启idea即可进行配置;

首先,先安装Eclipse Code Formatter插件;

IntelliJ IDEA常见问题解决办法汇总_settings_18

 

 上面是已经安装了。如果没有安装,安装后,重启IDE

IntelliJ IDEA常见问题解决办法汇总_字符串_19

 

  选择我们这导入的格式化模板:

IntelliJ IDEA常见问题解决办法汇总_ide_20

 


如果Scheme下没有刚才导入的eclipse style,则可以再重新导入一次:

IntelliJ IDEA常见问题解决办法汇总_plugins_21



Install plugin from disk:

COMPATIBLE BUILDS 号匹配的问题,如果不匹配,plugin就不能安装成功:

网页上每个plugin Build版本:

IntelliJ IDEA常见问题解决办法汇总_ide_22



IDE上的版本号:

IntelliJ IDEA常见问题解决办法汇总_idea_23

 在窗口的右上角小齿轮中取消勾选 复选框“Compact Empty Middle Packages”,Package路径就会以下图的形式展示。好处:可以更改任一层目录的文件夹名

 

IntelliJ IDEA常见问题解决办法汇总_settings_24

右键菜单中勾选了“Compact Empty Middle Packages”,则只能rename最外层的packsge名字:

IntelliJ IDEA常见问题解决办法汇总_ide_25



右键菜单中,去掉“Compact Empty Middle Packages”,则可以rename任一层package名字

IntelliJ IDEA常见问题解决办法汇总_idea_26


Error:java: javacTask: source release 8 requires target release 1.8

IntelliJ IDEA常见问题解决办法汇总_plugins_27

 

解决办法:
Settings【ctrl+alt+s】没有shift键--》

Build,Execution,Deployment-->Compiler-->Java Compiler
在打开的界面中,将Project bytecode version改成期望的jdk版本,
如果需要把Per-module bytecode version下每个模块的Target bytecode version按需进行更改

IntelliJ IDEA常见问题解决办法汇总_字符串_28

 

 

必备材料介绍

Project 和 Module 介绍

这两个概念是 IntelliJ IDEA 的必懂知识点之一,请务必要学会。

如 果你是 Eclipse 用户,并且已经看了上面给的链接,那 IntelliJ IDEA 首先告诉你一个非常重要的事情:IntelliJ IDEA 没有类似 Eclipse 工作空间(workspace)的概念的。很多从 Eclipse 转过来的人总是下意识地要再同一个窗口管理 n 个项目,这在 IntelliJ IDEA 是无法得到。IntelliJ IDEA 提供的体验是:一个 Project 打开一个 Window 窗口。

对于 Project,IntelliJ IDEA 是这样解释的:

  • Whatever you do in IntelliJ IDEA, you do that in the context of a project. A project is an organizational unit that represents a complete software solution. It serves as a basis for coding assistance, bulk refactoring, coding style consistency, etc.
  • Your finished product may be decomposed into a series of discrete, isolated modules, but it's a project definition that brings them together and ties them into a greater whole.
  • Projects don't themselves contain development artifacts such as source code, build scripts, or documentation. They are the highest level of organization in the IDE, and they define project-wide settings as well as collections of what IntelliJ IDEA refers to as modules and libraries.
  • 链接地址:​​https://www.jetbrains.com/idea/help/project.html​

对于 Module,IntelliJ IDEA 是这样解释的:

  • A module is a discrete unit of functionality which you can compile, run, test and debug independently.
  • Modules contain everything that is required for their specific tasks: source code, build scripts, unit tests, deployment descriptors, and documentation. However, modules exist and are functional only in the context of a project.
  • Configuration information for a module is stored in a .iml module file. By default, such a file is located in the module's content root folder.
  • Development teams, normally, share the .iml module files through version control.
  • 链接地址:​​https://www.jetbrains.com/idea/help/module.html​

通 过上面的介绍我们知道,在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目结构都是类似这种多 Module 结构,这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间应该都是处于同一个项目业务情况下的模块,彼此之间是有不可分割的业务关系的。

所以我们现在总结:一个 ​​Project​​​ 是由一个或多个 ​​Module​​​ 组成,模块之间尽量是处在同一个项目业务的的情况下,彼此之间互相依赖关联。这里用的是 ​​尽量​​,因为 IntelliJ IDEA 的 Project 是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范等类型的效果,也许我们可以简单地理解为就是一个单纯的目录,只是这个目录命名上必须有其代表性的意义。

下面我们以著名的 ​​spring-framework​​ 项目为例介绍多 Module 的结构的:

  • 项目主页:​​https://github.com/spring-projects/spring-framework​​:
  • 该项目的 ​​Project​​​ 命名是:spring-framework。该目录主要作用为各个 ​​Module​​​ 的顶层目录进行约束,告诉协同者,这个目录下都是 ​​spring-framework​​​ 相关的,我绝不对放 Android 相关源码、文档、文件在上面的。该目录并不是以一个实际性的目录来提现的,所以你访问主页是看不到的,但是当你 ​​checkout​​​ 的时候,你必须为这个项目命名,至于命名默认就是 ​​spring-framework​​。
  • 该 ​​Project​​​ 下有二十来个 ​​Module​​​,各个 ​​Module​​​ 的命名也是有含义的,比如:​​spring-core​​​、​​spring-jdbc​​​、​​spring-jms​​​、​​spring-orm​​​、​​spring-web​​​、​​spring-webmvc​​​ 等等,我们通过这些命名也能清楚地知道他们要表达的含义,这些 Module 下也都各自有 ​​src​​ 编码目录,可以自行编码和构建。
  • 相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 创建项目的时候,默认就是单 Module 的结构的。
  • 如上图 Gif 图演示,在输入 ​​Project name​​​ 的时候,​​Module name​​​ 和 ​​Module file Location​​​ 自动进行改变,同时 ​​Project location​​​ 和 ​​Module file Location​​​ 完全一样,这也就表示,Project 目录和 Module 目录是同一个,所以此时 Project 目录下就会有 ​​src​​ 目录,但是我们应该明白其本质还是 Module 的目录。

关于 IntelliJ IDEA 的 Project 和 Module 终于解释清楚了,但是由于 IntelliJ IDEA 官网上又有一段话对此解释得不够好,特别是对 Eclipse 用户来讲:​​https://www.jetbrains.com/idea/help/eclipse-faq.html​​,其中有这样两句话:

  • An Eclipse workspace is similar to a project in IntelliJ IDEA
  • An Eclipse project maps to a module in IntelliJ IDEA

你可以把 IntelliJ IDEA 的 ​​Project​​​ 当做 ​​workspace​​​ 使用,IntelliJ IDEA 也是支持的,但是就像我们前面解释的那么那么多,这样是非常不符合其初衷的,所以请别把这段话当做教义去学习。对此 zeroturnaround 的大牛也有针对此进行了说明:​​http://zeroturnaround.com/rebellabs/getting-started-with-intellij-idea-as-an-eclipse-user/3/​


 

(1)SVN相关的操作:

启用:
方法1:VCS菜单下Enable Version Control Integration,点击之后选择相应的版本控制工具
方法2:Setting中Version Control 中右边的 +  - none 都可以操作。

关闭:
类似开启中的方法2

 

(2)IntelliJ IDEA如何进行单元测试和代码覆盖率
​​​http://jingyan.baidu.com/article/9faa72315be0ef473d28cb64.html​

(3)解决中文乱码问题其实很简单。

按以下步骤设置,就可以顺利解决。

一、进入设置页。File-->Settings (快捷键:Ctrl+Alt+S)
二、进入IDE Settings,在File Encoding 中 的 Default encoding 改为 GB2312。
三、确定后,重新编译代码即可正常输出中文


 

IntelliJ IDEA常见问题解决办法汇总_settings_29

 (4)Show line numbers

IntelliJ IDEA常见问题解决办法汇总_idea_30

 

IntelliJ IDEA打Jar

1.菜单:File->project stucture...(也可以按快捷键ctrl+alt+shift+s)
2.在弹窗最左侧选中Artifacts->左数第二个区域点击"+",选择jar,然后选择from modules with dependencies,然后会有配置窗口出现,配置完成后,勾选Build On mak (make 项目的时候会自动输出jar)->保存设置
3.然后菜单:Build->make project
4.最后在项目目录下去找输出的jar包(路径在你添加Artifacts的时候设置的路径,默认是%project%\out\artifacts\projectname_jar\)

如果你的程序不是web,也不是窗体,而是命令行的服务端,发现运行jar发现没有反应,但在进程里有javaw.exe,解决办法是在这个jar文件所在目录新建一个文本文件,内容如下:

@echo off
java -jar SocketServer.jar

然后将这个文件保存为xxxx.bat,以后要运行项目就直接运行这个bat批处理文件。

debug,查看运行时表达式运算结果的short-cut key:

IntelliJ IDEA常见问题解决办法汇总_idea_31


使用工具栏上的VCS更新时,Update Project 选择”Merge"(平时执行的git pull = git fetch + git merge),Clean working tree before update 选择“Using Stash"(有问题可以直接在git bash中操作)

IntelliJ IDEA常见问题解决办法汇总_plugins_32

 

执行Ctrl+T命令,选择上面截图中的 “Merge”后,实际执行的git命令:

IntelliJ IDEA常见问题解决办法汇总_字符串_33

 

如果没有更新,则只执行fetch操作


IntelliJ IDEA常见问题解决办法汇总_ide_34

 

 

git fetch:将远程服务器的数据更新到本地的

git pull看起来像git fetch+get merge,但是根据commit ID来看的话,他们实际的实现原理是不一样的。
这里借用之前文献看到的一句话:
不要用git pull,用git fetch和git merge代替它。
git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法。当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。看起来git pull的用法会使你吃惊,简单看一下git的使用文档应该就能说服你。
将下载(fetch)和合并(merge)放到一个命令里的另外一个弊端是,你的本地工作目录在未经确认的情况下就会被远程分支更新。当然,除非你关闭所有的安全选项,否则git pull在你本地工作目录还不至于造成不可挽回的损失,但很多时候我们宁愿做的慢一些,也不愿意返工重来


 

 

IntelliJ IDEA常见问题解决办法汇总_plugins_35

​​ https://www.jetbrains.com/help/idea/2016.3/update-project-dialog-git.html​​

IntelliJ IDEA常见问题解决办法汇总_idea_36

Rest Client
Intellij IDEA 里面内置了一个 Rest Client,大家可以通过Mac/windows: Command + Shift + a / ctrl+shift+a,然后搜索 Rest Client 来找到"REST Client",然后双击,即可打开

IntelliJ IDEA常见问题解决办法汇总_settings_37

   

IntelliJ IDEA常见问题解决办法汇总_settings_38

 

REST Client实际上是Idea的一个plugin

IntelliJ IDEA常见问题解决办法汇总_字符串_39



IDEA 查看UML的快捷键:


Ctrl + Alt + Shift + U


IntelliJ IDEA常见问题解决办法汇总_ide_40


IntelliJ IDEA文件头注释模板
设置路径:
File-Other Settings-Default Settings-Editor-File and Code Templates-Includes-File Header

设置File Header:

/**
* @author : tang.cheng
* Project Name : ${PROJECT_NAME}
* Description :
* @version : ${VERSION} ${DATE} ${TIME}
* Modified by :
*/

 

/**
* ${PROJECT_NAME}
* @author : tang.cheng@xiaoyi.com
* @version : ${YEAR}-${MONTH}-${DAY} ${TIME}
*
*/

 

IntelliJ IDEA常见问题解决办法汇总_plugins_41

1、常用Java注释标签(Java comment tags)
@author 作者适用范围:文件、类、方法
(*多个作者使用多个@author标签标识,java doc中显示按输入时间顺序罗列。)
例:* @author Leo. Yao

@param 输入参数的名称 说明 适用范围:方法
例:* @param str the String用来存放输出信息。

@return 输出参数说明适用范围:方法
例: * @return <code>true</code>执行成功;
* <code>false</code>执行失败.

@since JDK版本用于标识编译该文件所需要的JDK环境。
适用范围:文件、类
例: * @since JDK1.6

@version 版本号用于标识注释对象的版本号
适用范围:文件、类、方法
例: * @version 1.0

@see 链接目标表示参考。会在java 文档中生成一个超链接,链接到参考的类容。
用法:
@see #field
@see #Constructor(Type, Type...)
@see #Constructor(Type id, Type id...)
@see #method(Type, Type,...)
@see #method(Type id, Type, id...)
@see Class
@see Class#field
@see Class#Constructor(Type, Type...)
@see Class#Constructor(Type id, Type id)
@see Class#method(Type, Type,...)
@see Class#method(Type id, Type id,...)
@see package.Class
@see package.Class#field
@see package.Class#Constructor(Type, Type...)
@see package.Class#Constructor(Type id, Type id)
@see package.Class#method(Type, Type,...)
@see package.Class#method(Type id, Type, id)
@see package

@throws 异常标识出方法可能抛出的异常
适用范围:方法
例: * @throws IOException If an input or output exception occurred

@deprecated 解释标识对象过期
适用范围:文件、类、方法

@link 链接地址链接到一个目标,用法类似@see。但常放在注释的解释中形如{@link …}
例:
/**
* @deprecated As of JDK 1.1, replaced by
* {@link #setBounds(int,int,int,int)}
*/
2、Java注释的使用顺序* @author (classes and interfaces only, required)
* @version (classes and interfaces only, required. See footnote 1)
* @param (methods and constructors only)
* @return (methods only)
* @exception (@throws is a synonym added in Javadoc 1.2)
* @see
* @since
* @serial (or @serialField or @serialData)
* @deprecated (see How and When To Deprecate APIs)


Tomcat部署时war和war exploded区别

ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文
war模式:发布模式,这是先打成war包,再部署 ; 【部署后的ServletContext是Servlet容器所在的目录,譬如Tomcat】
war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器【部署后的ServletContext是开发源代码所在的目录】;

在使用IDEA开发项目的时候,部署Tomcat的时候通常会出现下边的情况:

IntelliJ IDEA常见问题解决办法汇总_plugins_42

(1)war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;
(2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。

(3)在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。

修改箭头指向的位置,这样的话就可以实现热部署:

IntelliJ IDEA常见问题解决办法汇总_ide_43

使用war模式开发的时候遇到的坑

一、项目代码的位置如下:

IntelliJ IDEA常见问题解决办法汇总_ide_44


三、用于获取上下文环境绝对路径的代码:

String contextPath = request.getSession().getServletContext().getRealPath("/");

四、两种方式的实验过程和结果:

(1)在使用war模式开发的时候,通过下边这段代码获取项目的相对路径:

IntelliJ IDEA常见问题解决办法汇总_settings_45

其中C:\Software\apache-tomcat-8.0.32 是我Tomcat的所在位置。

可以看出通过war模式是最终打包部署到Tomcat的位置



(2)然后再看war exploded模式,同样进行设置,运行同一段代码,运行结果如下:

IntelliJ IDEA常见问题解决办法汇总_ide_46

可以看出最终得到的是我这个项目的位置,其实就是这个项目target的位置。
实现Idea中修改jsp后热部署

问题:修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat
解决办法:
step1:Deployment标签页中,new Artifact时选择 war exploded 。并检查右边的“Application context”设置与预期是否一致
step2:Server标签页中,
将 On 'Update' action中选择“Update classes and resources” ; 
将On frame deactivation中选择"Update classes and resources"

On 'update' action或On frame deactivation中没有 “Update classes and resources” ,是因为已经使用war【发布模式】进行Deploy过了。
解决办法:
step1:把war方式生成的Artifact删除
step2:使用 war exploded方式重新new一个Artifact

需要在Tomcat的设置中为:

IntelliJ IDEA常见问题解决办法汇总_plugins_47


on ‘update‘ action:当用户主动执行更新的时候更新    快捷键:Ctrl + F9
on frame deactication:在编辑窗口失去焦点的时候更新
你可以根据自己的需求进行设置,我这里两个都有设置。

问题2:如果你的工程中没有 Update classes and resources 这个选项

IntelliJ IDEA常见问题解决办法汇总_settings_48


在这种情况下你更新后只能更新classes文件中的变动,并不能更新静态文件中的变动。


原因:在Deployment的选项中使用的是先将工程打成war包然后再去运行的

IntelliJ IDEA常见问题解决办法汇总_ide_49


修改方式:

先remove当前工程,再次添加,添加的时候选择Artifact

IntelliJ IDEA常见问题解决办法汇总_ide_50


然后选择工程名称后面有 exploded的选项

IntelliJ IDEA常见问题解决办法汇总_ide_51

注意:
选择后记的填写Application context
然后在Server中更改为:Update classes and resources


在Intellij 中对分支打tag操作。

为什么要打tag?
tag中文的意思是标签的意思,生活中的标签有很多,比如产品的合格标签,赠品标签。
而在开发过程中,可能会有这样的问题出现,1 一个版本开发结束后,进行分支合并,在master上进行测试 上线,上线后发现有问题需要急需退回到上一个版本,这就要求我们自己手动在服务器上备份很多的war或者备份很多的文件夹。2 如果一般的修改在没有拉取新分支,而是在master上直接修改的话,修改后上线有问题,可以及时的拉取退回。3 如果在发版的时候忘记了备份war或者备份文件夹,及时代码进行回滚,代码回滚会造成一部分提交无效。所以,打tag很必要。

git tag和git branches区别?
查知乎上说,tag就像里程碑标志的一个点,branch是一个新的征程的一条线;tag 是静态的,而branch要往前走;稳定版本备份用tag,新功能开发多人用branch,开发完之后再merge到master上。
tag是一个只读的branch。

打tag git命令

$ git tag  //列出git中现有的所有标签
$ git tag -l v1.4.2.* //按照字母表顺序给出tag
v1.4.2.1
v1.4.2.2

$ git tag -a v1.4 -m ‘version 1.4′ //创建标签, -a 加标签,-m 加标签注释。
$ git tag v1.4-lw //创建轻量级标签,不用-a,-m等参数

$ git show v1.4 //git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象

$ git tag -a v1.2 9fceb02 //为已提交的信息贴上标签,为校验码为9fceb02*的版本贴上标签。

$ git push --tags //如果上传到服务器时不能上传tag,可加上--tags命令。\

Intellij中打tag

官方说明: https://www.jetbrains.com/help/idea/2016.1/working-with-tags-and-branches.html
tag and branch: https://www.jetbrains.com/help/idea/2016.1/working-with-tags-and-branches.html

步骤:
1、You can create a tag in VCS -> Git -> Tag... menu. (打开VCS中的git --Tag 菜单)

IntelliJ IDEA常见问题解决办法汇总_settings_52

commit 窗口:如果不填写默认是最新的head代码.

可以填写一个version的校验码:

IntelliJ IDEA常见问题解决办法汇总_settings_53

2 Then open the push dialog with VCS -> Git -> Push and activate the checkbox "Push Tags".

在点击create tag 之后, git push (或者ctrl+shif +k键)

IntelliJ IDEA常见问题解决办法汇总_字符串_54

选择push tags , 可以push 当前分支的tag , 也可以选择push 全部分支的tag。

怎样拉取tag的代码
checkout tag or revision,来检出代码。

​https://www.jetbrains.com/help/idea/2016.1/working-with-tags-and-branches.html​

 

idea 使用maven构建项目时,target bytecode version经常自动变化

解决方法:
在工程的pom.xml中添加

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

或者:添加properties节点

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<encoding>UTF-8</encoding>
</properties>


IntelliJ IDEA常见问题解决办法汇总_字符串_55

 

 

IntelliJ IDEA常见问题解决办法汇总_字符串_56

 

 

IntelliJ IDEA常见问题解决办法汇总_ide_57

 

 

IntelliJ IDEA常见问题解决办法汇总_settings_58

 

 

IntelliJ IDEA常见问题解决办法汇总_idea_59

 

 

IntelliJ IDEA常见问题解决办法汇总_idea_60

 

 

如果上面这4个地方的java sdk,java complier 都设置正常,应该不会报complier版本不对了

IntelliJ IDEA常见问题解决办法汇总_ide_61

 

 

IntelliJ IDEA常见问题解决办法汇总_ide_62

 

Language Level:

1.3-Plain old Java
1.4-'assert' keyword
5-'enum' keyword,generics,autoboxing etc.
6-@Override in interfaces
7-Diamonds,ARM,multi-catch etc.
8-Lambdas,type annotations etc.
9-Modules,private methods in interfaces etc.
10-Local variable type inference
11-Local variable syntax for lambda parameters
12-No new language features
12(Preview)-No new language features
13-No new language features
13(Preview)-Switch expressions,text blocks
X-Experimental features

IntelliJ IDEA常见问题解决办法汇总_plugins_63

 

 

Lombok Requires Annotation Processing

Annotation processing seems to be disabled for the project "jhipster".

For  plugin to function correctly, please enable it under "Settings > Build > Compiler > Annotation Processors"

Click on this notification to go to Settings now.

IntelliJ IDEA常见问题解决办法汇总_plugins_64

 

 

二、解决方法

file--->settings---> Build,Execution,Deployment-->Compiler-->Annotation Processors-->勾选Enable annotation processing

IntelliJ IDEA常见问题解决办法汇总_字符串_65

如果 在设置之后依然不能解决问题。

解决办法:

检查已安装的 lombok 插件,看是否是因为更新导致我的插件丢失,造成不可用,但是搜索后显示插件已安装。在这个配置页面随手点了点其他页签,此时发现了问题的端倪。已安装列表中赫然提示我的 lombok 插件需要更新,于是 update 插件,重启 idea,一切搞定。

IntelliJ IDEA常见问题解决办法汇总_idea_66

心得:

有时候出的问题其实很简单,只是我们在一开始将它想复杂了,到处寻求解决办法依然没有什么结果,于是愈发的凌乱。其实静下心来从头慢慢理会发现这个问题真的很好解决。
这个简单的问题将它记录下来,也算是对自己的一种提醒,日后遇到问题不要病急乱投医,一点点解决就好。