【核心】project(idea文件)、module(iml文件)到SSM集成、热部署、Tomcat启动、MAVEN依赖冲突

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-corespring-jdbcspring-jmsspring-ormspring-webspring-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有时不一样)

上一篇:Tomcat系列(11)——Tomcat 部署web应用的4种方法


下一篇:linux dns 连外网