【核心】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-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有时不一样)
【核心】project(idea文件)、module(iml文件)到SSM集成、热部署、Tomcat启动、MAVEN依赖冲突的更多相关文章
- idea忽略并隐藏.idea文件夹.iml文件不提交到svn
File-->setting-->Editor-->File Types 选中.boringignore,添加*.iml;.idea;即可
- Springboot静态文件不更新的解决办法,以及Springboot实现热部署
Springboot静态文件不更新的解决办法,以及Springboot实现热部署 原文链接:https://www.cnblogs.com/blog5277/p/9271882.html 原文作者:博 ...
- iml文件
iml是 intellij idea的工程配置文件,里面是当前projec的一些配置信息 ==== android studio svn 汉化 常规. 描述.网络.安全的shell 壳. 用命令行 ...
- Java开发.gitignore文件包含.iml,.log的看法
有一个开源项目https://github.com/github/gitignore 主要用来规范所有开发项目的.gitignore文件的编写,基本涵盖了所有的开发语言.开发环境等.今日我向JetBr ...
- idea中iml文件的问题
idea中iml文件的问题 iml文件是idea组织工程的文件, 里面记录了各种记录模块, 文件夹以及依赖的信息, 显示如下: <?xml version="1.0" enc ...
- IDEA中的.iml文件和.idea文件夹作用和意义
感谢原文作者:LZHHuo 原文链接:https://blog.csdn.net/weixin_41699562/article/details/99552780 .iml文件 idea 对modul ...
- IDEA中的.iml文件和.idea文件夹
.iml文件 iml文件是IntelliJ IDEA自动创建的模块文件,用于Java应用开发,存储一些模块开发相关的信息,比如一个Java组件,插件组件,Maven组件等等,还可能存储一些模块路径信息 ...
- .iml文件恢复
基于maven的java工程 执行 mvn idea:module可恢复.iml文件
- IntelliJ的.iml文件及相关的Class Not Found 问题
.iml 文件是IntelliJ IDEA 自动创建的模块文件,用于Java应用开发,存储一些模块开发相关的信息,比如一个Java组件, 插件组件,Maven组件等等, 还可能会存储一些模块路径信息, ...
随机推荐
- nginx thinkphp只能访问首页
代码部署到了服务器上,发现无论怎样请求,都是跳转到index/index/index(模块/控制器/方法),最后需要nginx重新地址即可 参考:Linux下Nginx部署Thinkphp5访问任何地 ...
- 用Python计算幂的两种方法,非递归和递归法
用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...
- 【POJ2230】Watchcow
题目大意:给定一个 N 个点,M 条边的无向图,要求不重复地经过每条边两次,并且从 1 号节点出发最后回到 1 号节点,求一条路径. 题解:不重复地经过两次这个操作很容易地通过无向图的建边方式来实现, ...
- MySQL常用的一些函数
内容太多,走链接: MySQL函数大全
- 第十七篇-使用RadioGroup实现单项选择
上效果图 首先进行控件布局,一个textview,6个radiobutton, main_activity.xml <?xml version="1.0" encoding= ...
- bash 5
1)bash支持一维数组(不支持多维数组),并且没有限定数组的大小. 类似于 C 语言,数组元素的下标由 0 开始编号.获取数组中的元素要 利用下标,下标可以是整数或算术表达式,其值应大于或等于 0. ...
- Day3--Python--字符串,for循环,迭代
常见的基本数据类型: 1.int 整数 主要用来进行数学运算 2.bool 布尔. 判断真假. if 和 while循环中常用 3.str 字符串,一般放小量数据 4.list 列表.可以存放大量的数 ...
- hdu 3613"Best Reward"(Manacher算法)
传送门 题意: 国王为了犒劳立下战功的大将军Li,决定奖给Li一串项链,这个项链一共包含26中珠子"a~z",每种珠子都有 相应的价值(-100~100),当某个项链可以构成回文时 ...
- 字符设备驱动(六)按键poll机制
title: 字符设备驱动(六)按键poll机制 tags: linux date: 2018-11-23 18:57:40 toc: true --- 字符设备驱动(六)按键poll机制 引入 在字 ...
- svn 基础
安装,略过. 快速创建.配置及启动项目 创建项目 svnadmin create /home/svn/project_name #创建名为project_name的项目(/home/svn为自定义创建 ...