必备材料介绍
- IntelliJ IDEA 对其他 IDE 转过来的用户有特别优待,对其专门整理了非常棒的资料,还请其他 IDE 过来的用户抽时间查看,会有很大帮助:
- Eclipse 用户可以看:https://www.jetbrains.com/idea/help/eclipse.html
- NetBeans 用户可以看:https://www.jetbrains.com/idea/help/netbeans.html
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/
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。
三、确定后,重新编译代码即可正常输出中文
http://blog.csdn.net/angelhacker/article/details/6581577
(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 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:
使用工具栏上的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
http://www.cnblogs.com/jeffen/p/6169862.html
IDEA 查看UML的快捷键:
Ctrl + Alt + Shift + U
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