http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/project-composition-introduce.html
在 IntelliJ IDEA 中 Project 是最*的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目结构都是类似这种多 Module 结构,这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间应该都是处于同一个项目业务情况下的模块,彼此之间是有不可分割的业务关系的。
【为什么Project不能当作workspace去用】
一个 Project
是由一个或多个 Module
组成,模块之间尽量是处在同一个项目业务的的情况下,彼此之间互相依赖关联。
因为 IntelliJ IDEA 的 Project 是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范等类型的效果,也许我们可以简单地理解为就是一个单纯的目录,只是这个目录命名上必须有其代表性的意义。
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 的结构的。
- 在输入
Project name
的时候,Module name
和Module file Location
自动进行改变,同时Project location
和Module file Location
完全一样,这也就表示,Project 目录和 Module 目录是同一个,所以此时 Project 目录下就会有src
目录,但是我们应该明白其本质还是 Module 的目录。
综上总结:Project = module [+module[+module...]]
(在单module的项目,Module 的编译输出目录可以跟 Project 的项目输出目录一样。)
.idea
即为 Project
的配置文件目录。
.iml
即为 Module
的配置文件。
如果把这些文件加入到版本控制之后,那又有一点是需要考虑的,那就是协同者 Checkout 项目下来之后,按自己的需求进行项目配置的之后,项目的 XML 文件也会跟着变化。
此时协同者的这些变化的文件就不应该再上传到版本控制中。
【集成Spring-SpringMVC-MyBatis】
什么Spring配置applicationContext.xml、SpringMVC配置mybatis-servlet.xml,统统在ProjectStructure的Facets下,配置位置告诉IDEA你在用上啥框架,提供对应的便利给我们。
【本地容器Tomcat配置】
【热部署】
1.传统热部署
-
On Update action
当我们按Ctrl + F10
进行容器更新的时候,可以根据我们配置的这个事件内容进行容器更新。其中我选择的Update classes and resources
事件是最常用的,表示我们在按Ctrl + F10
进行容器更新的时候,我们触发更新编译的类和资源文件到容器中。在 Debug 模式下,这个也就是所谓的HotSwap
。
2.JRebel 插件热部署
【更多参数】
-
On frame deactivation
当我们切换 IntelliJ IDEA 到浏览器的时候进行指定事件更新,这个一般是因为 Web 开发的时候,我们需要经常在 IntelliJ IDEA 和各个浏览器之间来回切换测试,所以才有了这种需求。IntelliJ IDEA 是为了帮我们在做这种无聊切换的时候做一些指定事情。当然了,如果切换过于频繁,这个功能还是很耗资源的,所以我设置的是Do nothing
表示切换的时候什么都不做。 - 容器运行前动作 MAKE Build Artifacts(deploy)
【Maven项目】
IDEA会detect到MAVEN_HOME系统参数。
【侧边栏MAVEN的使用】
- 第一个按钮:
Reimport All Maven Projects
表示根据pom.xml
重新载入项目。一般当我们在pom.xml
添加了依赖包或是插件的时候,发现标注 4 的依赖区中没有看到最新写的依赖的话,可以尝试点击此按钮进行项目的重新载入。 - 第六个按钮:
Execute Maven Goal
弹出可执行的 Maven 命令的输入框。有些情况下我们需要通过书写某些执行命令来构建项目,就可以通过此按钮。 - 第九个按钮:
Show Dependencies
显示项目依赖的结构图,可以方便我们直观项目的依赖包情况。这个功能有些具体的操作下面会专门进行讲解。
*【Apache Tomcat Maven Plugin】clean - package - 使用maven插件tomcat运行(需要自己pom配置)
【EXCLUDE排除MAVEN依赖冲突】
通过侧边栏的按钮进入依赖结构图,在图exclude操作。(通常红线代表依赖冲突,虚线告诉我们哪里也引用了这个依赖,特殊Hibernate有时不一样)