文档章节

关于项目称谓、IDEA操作和环境配置的约定

许乌龙
 许乌龙
发布于 2017/02/13 22:11
字数 1362
阅读 610
收藏 3

本文隶属于新手图文教程《IDEA+Maven搭建Spring+SpringMVC+Mybatis项目骨架》

下一篇:项目架构之传统三层架构和领域模型三层架构

目录 & 项目地址:http://git.oschina.net/mzdbxqh/ssm-study/

一、称谓约定

IDEA和Maven有一些概念上的差异,可能会在表述过程中造成误解。因此,在文章开始之前,先对一些称谓进行约定。:

1. IDEA

  • IDEA的每个应用程序实例只能打开一个项目(Project)。
  • IDEA的把项目看作是一种特殊的模块(Module)。
  • IDEA的项目下面可以有若干个子模块(Sub Module),子模块又可以有自己的子模块。

IDEA里面,项目/模块的名称一般就是目录名称。当然,你也可以在新建项目/模块时,把名称设置得跟目录不一样。项目/模块名称保存在IDEA的项目配置文件中,与maven的pom.xml无关。

2. Maven

  • Maven认为每个模块(Module)都是一个项目(Project)。
  • Maven认为,IDEA里边的、包含多个模块的项目,就是一个聚合项目(Aggregation),或者是多模块项目(Multi-Module)。

Maven里面,项目名称一般就是pom.xml里边的ArtifactId,当然你也可以在pom.xml里边用name节点配置一个更友好的名称。这个名称与IDEA的项目配置文件无关。

鉴于以上差异,本系列文章约定,指代所有Module时均称之为模块,但在指代最外层的父项目时,称之为项目。同时为避免不必要的误解,除了IDEA的projectName之外,其他Module名称均与目录名称保持一致。

二、操作约定

IDEA通过.idea目录下的xml文件来记录项目信息,而maven则通过pom.xml来记录。IDEA会侦测pom.xml文件的变化,并对不同事件绑定了不同的行为。例如:

  • pom.xml创建事件 - 对module的内容进行索引操作;
  • pom.xml修改事件 - 下载并引入相应的依赖等操作。

发生上述事件时,右上角将弹出对话框(如下图)。选择Import ChangesEnable Auto-Import即激活IDEA绑定的行为,以实现maven配置与IDEA配置一致。其中,Enable Auto-Import意为启用自动引入变动,即后续发生变动时不再弹出该对话框,默许IDEA自动执行绑定行为。

maven auto import

另一种开启自动同步的方式是通过Preference配置:

maven自动导入配置

但IDEA对maven的支持是单向的。也就是说,IDEA的配置变动后,变化并不会反馈到pom文件上面。例如在IDEA内直接对module进行重构改名删除之类的操作,是不会更新pom.xml的。因此,存在某些操作,可能会导致IDEA的配置与maven的配置不一致,出现module未被IDEA列入索引或maven打包时缺失模块等各种问题。为避免这种问题,并实现更好的跨IDE兼容性,本教程做以下约定:

  1. 模块的根目录名称与模块的ArtifactId一致
    -- 避免不必要的误解
  2. 子模块的工程文件夹嵌套在父模块的工程文件夹的根目录下,而不是平级(聚合模块可以平级)
    -- 金字塔结构便于管理
  3. 创建project和module的操作通过嵌入了IDEA菜单的Maven插件进行,而不是使用mvn命令生成
    -- 既生成规范的pom(Project Object Model),又能定制填写IDEA关注的参数。相比之下,IDEA的普通新建菜单不会生成pom文件,mvn命令不便于定制生成较为复杂的项目结构。
  4. 对版本、依赖等修改通过pom.xml进行,而不是在IDEA的Project Settings中修改
    -- IDEA会根据pom.xml自动引入第三方依赖的变动,反之pom不会自动引入IDEA添加的依赖包
  5. debug/run/package等行为通过maven命令行或者IDEA的maven插件进行
    通过IDEA的debug/run Configurations配置基于tomcat的运行环境,需要关注过多不能做到跨IDE的配置细节。相比之下,只需要在pom.xml配置好tomcat运行的相关参数,即可做到在不同OS不同IDE下面拥有相同的运行配置。

三、环境约定

为避免因版本差异造成不可预见的错误,建议参照作者的开发环境进行配置:

软件 版本
Tomcat 7
Intellij IDEA 2016.1
JRE 1.8.0_122-b16
maven 3.3.9
Mysql 5.6.35

其中,记得在IDEA的Project Structure配置界面中,把SDK和maven配置为上述版本

SDK版本

maven版本配置

四、知识结构

下面这张图列出了阅读本篇教程提到或需用到的知识,其中环境安装配置部分请自行解决,这里主要讲解环境配置完毕后搭建项目的具体步骤。

知识结构

推荐阅读:Github项目:Intellij IDEA中文文档

- 至少读完第1章(IDEA介绍)至第14章(项目相关概念讲解)

建议阅读:猴子都能懂的GIT入门

- 建议掌握Git的基本操作,并拥有自己的码云/Github账号

© 著作权归作者所有

共有 人打赏支持
许乌龙
粉丝 80
博文 18
码字总数 31823
作品 0
广州
个人站长
Maven 与 IntelliJ IDEA 的完美结合

你是否正在学习Maven?是否因为Maven难用而又不得不用而苦恼?是否对Eclipse于Maven的冲突而困惑? 那么我告诉你一个更直接更简单的解决方案: IntelliJ IDEA! 1. 什么是 Maven,为什么要使用...

Java编程思想
2014/01/02
0
0
IntelliJ Idea 14 安装 Golang 插件 google-go-lang-idea-

IntelliJ Idea 14 安装 Golang 插件 google-go-lang-idea-plugin 的方法 2015-03-08 16:51 zsjangel 阅读 4249 次 0 人喜欢 1 条评论 收藏 IDEA 的编辑器都很强悍,所以现在学Go 也想用他啊,...

epiclight
2015/07/30
0
0
2.2 Selenium 环境搭建

Java 环境搭建 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装JDK 配置Java 环境 校验是否安装完成 控制台输入: java –version 提示版......

米阳MeYoung
04/24
0
0
Intellij Idea 从 Svn 检出 Maven 项目、部署 Tomcat 运行

之前一直用的MyEclipse,现在换个开发工具试试,随手记录一下Intellj Idea 工具的使用,这里导入的Maven项目是Eclipse的结构。 软件环境 JDK 1.8 Tomcat 7 Intellj Idea TortoiseSVN Apache...

华山猛男
03/21
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第四步)(2)

第二步:使用Spark的cache机制观察一下效率的提升 基于上面的内容,我们在执行一下以下语句: 发现同样计算结果是15. 此时我们在进入Web控制台: 发现控制台中清晰展示我们执行了两次“count...

Spark亚太研究院
2014/09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

bat强制启用宏

运行bat文件后,将宏的安全等级设为低,达到启用宏的目的。 REM 这个文件将提供用户快速设置Excel宏的安全等级@ECHO OFFCLS:cmd4REG ADD "HKEY_CURRENT_USER\Software\Mi...

tedzheng
11分钟前
0
0
流,用声明性的方式处理数据集 - 读《Java 8实战》

引入流 Stream API的代码 声明性 更简洁,更易读 可复合 更灵活 可并行 性能更好 流是什么? 它允许以声明方式处理数据集合 遍历数据集的高级迭代器 透明地并行处理 简短定义:从支持数据处理...

yysue
12分钟前
1
0
postman发送json格式的post请求

postman发送json格式的post请求 在地址栏里输入请求url:http://127.0.0.1:8081/getmoney 选择“POST”方式, 在“headers”添加key:Content-Type , value:application/json 点击"body",''ra...

两广总督bogang
19分钟前
0
0
Javascript将html转成pdf,下载(html2canvas 和 jsPDF)

最近碰到个需求,需要把当前页面生成pdf,并下载。弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :) 项目源码地址:https://github.com/linwalker/render-html-to-pdf html2ca...

孟飞阳
20分钟前
0
0
pureftp源码编译及设定

--- use for RHEL 567 and Ubuntu 1604 1. download pureftpd wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.47.tar.bz2 2. install gcc #apt-get install -y li......

zzimac
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部