IntelliJ IDEA 项目相关的几个重要概念介绍

必备材料介绍

IntelliJ IDEA 对其他 IDE 转过来的用户有特别优待,对其专门整理了非常棒的资料,还请其他 IDE 过来的用户抽时间查看,会有很大帮助:
Eclipse 用户可以看:https://www.jetbrains.com/idea/help/eclipse.html
NetBeans 用户可以看:https://www.jetbrains.com/idea/help/netbeans.html

这两个概念是 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-corespring-jdbcspring-jmsspring-ormspring-webspring-webmvc 等等,我们通过这些命名也能清楚地知道他们要表达的含义,这些 Module 下也都各自有 src 编码目录,可以自行编码和构建。

相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 创建项目的时候,默认就是单 Module 的结构的。

如上图 Gif 图演示,在输入 Project name 的时候,Module nameModule file Location 自动进行改变,同时 Project locationModule 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/

时间: 2024-10-24 23:13:48

IntelliJ IDEA 项目相关的几个重要概念介绍的相关文章

9.IntelliJ IDEA 项目相关的几个重要概念介绍

必备材料介绍 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 IDE

项目相关

my_nameXBIDADDRESStelqqnote //显示表所有的项的自断的类型和大小mysql> show full columns from hdxcy_info;+-----------+--------------+-------------------+------+-----+---------+--------------------------------------+---------+| Field | Type | Collation | Null | Key | D

开源项目相关的各种许可证

开源项目相关的各种许可证 License License keyword Academic Free License v3.0 afl-3.0 Apache license 2.0 apache-2.0 Artistic license 2.0 artistic-2.0 Boost Software License 1.0 bsl-1.0 BSD 2-clause "Simplified" license bsd-2-clause BSD 3-clause "New"

web页面相关的一些常见可用字符介绍——张鑫旭

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1623 正文开始之前先分享两个与字符相关的东西.首先是一张图片,是一张一些字符以及想对应的HTML实体表示的对照图片.如下: 然后是一个页面,是我收集的些杂七杂八字符页面,地址如下:http://www.zhangxinxu.com/sp/character.html 希望这两个东西能对您有所帮助,ok,下面是本文的主要

AP_AP系列 - 相关设定的简述(概念)

2014-07-08 BaoXinjian 一.摘要 1. 付款条件 2. 发票允差 3. 发票挂起 4. 财务选项 5. 应付款选项 6. 应付款系统设置 二.付款条件 Setup1. 付款条件 三.发票允差 Setup1. 发票允差模板 四.发票挂起和解放设定 Setup1. 发票挂起和解放设定 五.财务选项 Setup1. 会计 Setup2. 供应商 - 采购 Setup3. 保留款 Setup4. 税 Setup5. 人力资源 六.应付款系统选项 Setup1 会计选项 Setup2.

Intellij IDEA tomcat相关

Intellij创建web项目,用 tomcat启动 http://blog.csdn.net/little__zm/article/details/19570535 Intellij导入myeclipse web项目 http://zyjustin9.iteye.com/blog/2172712 Intellij IDEA 导入Eclipse或MyEclipse的Web项目 1.通过TortoiseSVN客户端将远程项目checkout出来,保存到硬盘上 2.File -> Import Mo

Spring Data Jpa示例(IntelliJ maven项目)

1. 在IntelliJ中新建maven项目 给出一个建好的示例,(本示例中省略了业务逻辑组件UserService) 2. 在pom.xml中配置依赖 包括: spring-context spring-orm spring-data-jpa hibernate-core hibernate-entitymanager mysql-connector-java commons-dbcp junit spring-test 代码如下: <dependencies> <!-- Spring

最详尽的IntelliJ IDEA项目web项目搭建!!!!!!

一.创建一个web项目(首次创建最麻烦) 1.保证安装好软件 2.双击打开软件-->新建一个项目 3.web项目选择如图,先建立一个空的项目空间来放置你的项目,这是一个区别 相当于myeclipse的如图 4.建立项目的名称 相当于myeclipse的如图 5.点击fininsh,会弹出如图所示,问你建立的项目是在此页显示,还是在新页显示,这个看你的需求,这里以新页为了,以跟我的之前项目区分.(这是一个区别) 6.这时会弹出如图的设置,需要设置使用的JDK,这里叫做SDK 7.如果没有弹出,可以

软件工程-构建之法 团队作业(三) 项目相关问题分析

一.前言 目前大学生在校园中,自己有自己的学习,但是很多学生还是想做出一番成绩,长大了,想有自己的经济来源,会经常接触到兼职问题,我们也是考虑到大学目前现状,一部分人很热爱学习,准备考研考博深造,一部分人想在在大学中学上一门技术,可以毕业后找到工作,还有人会想在大学生多与社会接触,这样以后出了校园会很快适应社会生活,同时这部分人会经常做兼职,例如做家教,发传单,贴海报,以及在路边做采访,婚庆帮忙,以及超市促销员..... 二.要求 1.你的项目是这个领域的先行者,还是走在别人的后面? 2.这个领