有一个观点:若一个Java开发者能把IDEA玩得,则技术一定不会差;但若玩不转IDEA(如不会设置、定制、解决日常问题、快捷键等等),那大概率水平很一般。因为高手一般得有高手的样子,你同意这个观点吗?
现今的Javaer绝大部分都使用IntelliJIDEA作为IDE进行开发,但同时发现(从身边同事调查)大部分同学都并不能很好的使用IDEA,其中表现最为突出的是IDEA里的Project和Module两个概念,混淆不清或者概念完全扭曲。
本人是一个相对来讲很注重基础知识搭建的Javaer,所以对于最常用的工具也是如此,愿意花些时间去搞明白,包括页布局、功能定制、插件、以及快捷键都会调为自己最顺手的状态,毕竟工欲善其事,必先利其器。
本文将着眼于帮你深入的介绍IntelliJIDEA里最重要的两个概念:Project和Module,它是最最最基础也是最重要的,我认为本文不仅适合使用IDEA的萌新,同样适合使用IDEA的“老手”(曾经eclipse的重度用户尤甚)。
本文提纲
版本约定
IntelliJIDEA:.3.1
正文
IntelliJIDEA相较于Eclipse可谓是后起之秀,年开始崭露头角,年整体性能上完败Eclipse,年市场份额完成全面超越,一步步的逐渐成为JVM平台的主流IDE。
正是由于有这样的历史进程,有大批“老”程序员是从Eclipse过度到IDEA来的,因此就有了一个颇具代表性的概念对比表格,方便“迁移”:
诚然,IntelliJIDEA的使用成本比eclipse略高,在那样的历史背景下,这张表格确实降低了“老”程序员们的迁移过度成本,即使现在看来这张表格的描述并不准确,设置具有极大的误导作用(副作用开始展现......)。
IDEA和eclipse的概念类比上,最“著名”的当属把IDEA的Project比作Eclipse的Workspace,回忆下你当初是不是经常听到这样的声音?博客文章这样说、培训机构老师这样说、甚至大学的老师也是教你这么去理解的。更有甚者,对于很多“中毒”很深的、曾经的eclipse用户来说,他们是这样使用IDEA的:
实现了所谓的:IDEA在同一窗口显示多个项目。若你发现你身边有这么样管理项目的同事,那么他是你的“前辈”没跑了,因为铁定是eclipse的资深用户,然后迁移到IDEA来。
这种做法是错误的,毫不相干的项目(远程调用不叫有关系)没有理由放在同一视窗内,除了干扰还是干扰。Eclipse里有workspace工作空间的概念尚可理解,可IDEA里是绝对不要这么做。
在IntelliJIDEA中,没有类似于Eclipse工作空间(Workspace)的概念,而是提出了Project和Module这两个概念。本文来告诉你,IntelliJIDEA是如何管理项目Project、模块Module以及它俩关系,看完之后你会发现单这一点IntelliJIDEA就比Eclipse优秀得多。
Project和Module概念
什么是Project
Eclipse中一个Workspace可以包括多个Project,而在IDEA里Project是顶级概念。
Project(翻译为:项目)IntelliJIDEA的顶级组织单元,它是个逻辑概念。一般来说一个Project代表一个完整的解决方案,如它可包含多个部分,如:
源代码
构建脚本
配置文件
文档
SDK
依赖库
...
也就是说Project是个完整体,是个资源的集合,扔到任何地方都是可以被解释的。
说明:建议把Project翻译为项目,而非工程,不在一个维度。因为一个module其实也可以理解为一个工程,避免混淆
什么是Module
模块是是项目Project的一部分,必须隶属于Project而存在。它可以独立编译、测试、运行甚至部署。
模块是分而治之思想的体现,是降低大型项目复杂度的一种有效手段。模块是可重用的,若需要,一个模块可以被多个模块引用,甚至多个Project项目引用(比如