idea在单元测试中设置JVM参数
运行一次测试用例,然后在工具栏中点 Run/Debug旁边的向下的小箭头:选择Edit Configuration…
![](https://img2018.cnblogs.com/blog/280044/201809/280044-20180921214553297-861343618.png)
![](https://img2018.cnblogs.com/blog/280044/201809/280044-20180921214619365-828278610.png)
Install plugin from disk:COMPATIBLE BUILDS 号匹配的问题,如果不匹配,plugin就不能安装成功:网页上每个plugin Build版本:
![](https://images2017.cnblogs.com/blog/280044/201712/280044-20171222111004193-1439933839.png)
![](https://images2017.cnblogs.com/blog/280044/201712/280044-20171222111018725-895329398.png)
在窗口的右上角小齿轮中取消勾选 复选框“Compact Empty Middle Packages”,Package路径就会以下图的形式展示。好处:可以更改任一层目录的文件夹名
右键菜单中勾选了“Compact Empty Middle Packages”,则只能rename最外层的packsge名字:
![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404183534749-532292756.gif)
![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404183639408-821841912.gif)
https://blog.csdn.net/lv_fq/article/details/51874181
必备材料介绍
- IntelliJ IDEA 对其他 IDE 转过来的用户有特别优待,对其专门整理了非常棒的资料,还请其他 IDE 过来的用户抽时间查看,会有很大帮助:
- Eclipse 用户可以看:
- NetBeans 用户可以看:
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.
- 链接地址:
对于 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.
- 链接地址:
通 过上面的介绍我们知道,在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目结构都是类似这种多 Module 结构,这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间应该都是处于同一个项目业务情况下的模块,彼此之间是有不可分割的业务关系的。
所以我们现在总结:一个 Project
是由一个或多个 Module
组成,模块之间尽量是处在同一个项目业务的的情况下,彼此之间互相依赖关联。这里用的是 尽量
,因为 IntelliJ IDEA 的 Project 是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范等类型的效果,也许我们可以简单地理解为就是一个单纯的目录,只是这个目录命名上必须有其代表性的意义。
下面我们以著名的 -framework
项目为例介绍多 Module 的结构的:
- 项目主页::
- 该项目的
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 用户来讲:,其中有这样两句话:
- 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://blog.csdn.net/ichsonx/article/details/48831277
(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。三、确定后,重新编译代码即可正常输出中文
(4)Show line numbers
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 project4.最后在项目目录下去找输出的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:![](https://images2015.cnblogs.com/blog/280044/201510/280044-20151031234725247-2041813147.jpg)
使用工具栏上的VCS更新时,Update Project 选择”Merge"(平时执行的git pull = git fetch + git merge),Clean working tree before update 选择“Using Stash"(有问题可以直接在git bash中操作)
https://www.jetbrains.com/help/idea/2016.3/update-project-dialog-git.html
Rest Client
Intellij IDEA 里面内置了一个 Rest Client,大家可以通过Mac/windows: Command + Shift + a / ctrl+shift+a,然后搜索 Rest Client 来找到"REST Client",然后双击,即可打开
REST Client实际上是Idea的一个plugin
![](https://images2015.cnblogs.com/blog/280044/201704/280044-20170425135558178-364885834.png)
IDEA 查看UML的快捷键:
Ctrl + Alt + Shift + U![](https://images2015.cnblogs.com/blog/280044/201705/280044-20170512214923926-864664443.png)
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} * */
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)http://blog.csdn.net/tmj2014/article/details/12622241
Tomcat部署时war和war exploded区别
ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文
war模式:发布模式,这是先打成war包,再部署 ; 【部署后的ServletContext是Servlet容器所在的目录,譬如Tomcat】war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器【部署后的ServletContext是开发源代码所在的目录】;
在使用IDEA开发项目的时候,部署Tomcat的时候通常会出现下边的情况:
![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404184253018-317478996.png)
(1)war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;
(2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。(3)在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。修改箭头指向的位置,这样的话就可以实现热部署:
使用war模式开发的时候遇到的坑
一、项目代码的位置如下:![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404184532382-1755093500.png)
String contextPath = request.getSession().getServletContext().getRealPath("/");
四、两种方式的实验过程和结果:
(1)在使用war模式开发的时候,通过下边这段代码获取项目的相对路径:![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404184735747-1620844122.png)
其中C:\Software\apache-tomcat-8.0.32 是我Tomcat的所在位置。
可以看出通过war模式是最终打包部署到Tomcat的位置。(2)然后再看war exploded模式,同样进行设置,运行同一段代码,运行结果如下:![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404184914343-657479499.png)
可以看出最终得到的是我这个项目的位置,其实就是这个项目target的位置。
https://blog.csdn.net/xlgen157387/article/details/56498938实现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的设置中为:
![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404194518026-1398434189.png)
on ‘update‘ action:当用户主动执行更新的时候更新 快捷键:Ctrl + F9
on frame deactication:在编辑窗口失去焦点的时候更新你可以根据自己的需求进行设置,我这里两个都有设置。问题2:如果你的工程中没有 Update classes and resources 这个选项
![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404194721537-1476693934.png)
修改方式:
先remove当前工程,再次添加,添加的时候选择Artifact![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404194935944-695005593.png)
![](https://images2018.cnblogs.com/blog/280044/201804/280044-20180404195026174-174379926.png)
注意:
选择后记的填写Application context然后在Server中更改为:Update classes and resourceshttp://www.cnblogs.com/hhhd/p/6640875.html