文档章节

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

许乌龙
 许乌龙
发布于 2017/02/13 22:11
字数 1362
阅读 643
收藏 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账号

© 著作权归作者所有

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

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

Java编程思想
2014/01/02
0
0
SpringBoot学习之路:13.SpringBoot使用Lombok简化JavaBean代码

SpringBoot采用约定大于配置的方式,极大的减少了配置文件的使用,简化了开发过程中的配置难度,使得项目开发更加高效。当然初次之外我们还可以采用其他手段来简化代码,使得代码没那么臃肿。...

MaxBill
08/21
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
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

没有更多内容

加载失败,请刷新页面

加载更多

这周撸了两款小程序,分享下关键点。

本周撸了两款小程序,在这里总结下开发过程中的小经验,希望对大家有用。 小程序端 我们先说小程序要注意的地方。 ##默认入口转发问题 当一个小程序Page的js文件中存在 onShareAppMessage 方...

阿北2017
20分钟前
1
0
物联网技术很新吗?不!都是旧技术

通常,当我们想到物联网时,我们会想到新的、令人兴奋的现代技术。毕竟,还有什么比不用起床就能通过智能手机告诉咖啡机开始煮晨杯的“未来”更重要呢? 多亏了物联网,我们可以在世界任何地方...

linuxCool
28分钟前
1
0
利用责任链模式设计一个拦截器

前言 近期在做 Cicada 的拦截器功能,正好用到了责任链模式。 这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。 责任链模式 先来看看什么是责任链模式。 引用一段维基百科对其...

crossoverJie
46分钟前
2
0
属性动画

透明度 alpha 平移translationX/translationY 旋转 rotation 缩放 scaleX/scaleY 多个动画一起AnimatorSet 透明度 ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"alpha" ......

lanyu96
47分钟前
1
0
Docker和Kubernetes如何让DevOps更具效力

缩短time-to-makrt对于任何一家企业都至关重要,这直接决定了客户满意度、市场竞争力乃至盈利能力。但在部署应用时,大多数企业内的IT团队都或多或少会遇到Dev和Ops之间的问题,这两个部门围...

好雨云帮
56分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部