Maven 与 IntelliJ IDEA 的完美结合
你是否正在学习Maven?是否因为Maven难用而又不得不用而苦恼?是否对Eclipse于Maven的冲突而困惑? 那么我告诉你一个更直接更简单的解决方案: IntelliJ IDEA!
1. 什么是 Maven,为什么要使用 Maven 而不是 Ant
Maven简单来说是一个项目管理工具,被认为是Ant的替代品或者继任者。事实上Maven的功能要远远超出Ant,它不仅仅提供编译的脚本,更是在整 个项目周期中提供测试,发布,文档生成等功能,并且有着独特的依赖性管理方法。但是强大的功能的代价就是复杂的使用方法,第一次使用Maven往往需要将 近半个小时的时间(国内网速)来下载一个本地的依赖库,这无疑会使很多开发人员“知难而退”。虽然广受诟病,一个不争的事实就是Maven逐渐代替了 Ant,使用Maven也成了Java开发人员的一个必要技能。
2. IntelliJ IDEA 与 Eclipse
在Java的世界里,Eclipse毋庸置疑是IDE中的王者,IntelliJ IDEA和NetBeans都只能生活在Eclipse的光环下。Eclipse的强大已经不用我多说了,但其实IntelliJ IDEA也是一个相当优秀的IDE,尤其体现在它的智能上。它的一个针对.Net的Clone产品ReSharper已经被越来越多的C#开发者所接受。 IntelliJ IDEA提供了大量的智能规则来协助开发者,类似代码补全,用法的转换,格式的提示等等,当你习惯以后,你就会对那个小灯泡爱不释手。
3. 选择 Maven + IntelliJ IDEA 的理由
之所以要选择IntelliJ IDEA,是因为Maven+Eclipse实在太难用了。Eclipse有两个Maven插件 m2eclipse 和 Eclipse IAM。但是由于Eclipse和Maven设计上的矛盾,这两个插件可能都达不到你想要的效果。m2eclipse 会把你所有类型的项目都视为Maven类型项目,这对于一个单纯的Java项目或许可以,对于一个JEE或者WEB项目都是一场灾难。Eclipse IAM 并不会改变你的项目类型,但是他提供的功能也就仅仅限于编辑和运行POM文件了,甚至连依赖性都管理不了。相比之下,如果你非要用Eclipse的话我还 是推荐你使用Eclipse IAM。Eclipse想要完美的支持Maven恐怕需要在底层设计上做一些改变,无论是代码规范,项目结构规范和依赖性管理上,都有着不可调和的矛盾。 显然,在这方面IntelliJ IDEA做的要好的多,以至于你很难说出对它的不满。
4. Maven + IntelliJ IDEA 的优势
一切都是Module:
IntelliJ IDEA借鉴的Maven的概念,不在采取Eclipse里Project的概念,一切都是Module。无论是否使用Maven,你的项目都是一个独立 的Module。并且你可以混搭使用Maven Module和普通的Java Module,两者可以和谐共存。
支持Multi-module:
可以说Maven的项目结构设计是非常严格的,现实应用中你必须用到Parent-Child的模式。Eclipse由于不支持在一个Project上建 立Sub-Project,因此无论如何目前都不能实现。IntelliJ IDEA可以完美的实现这个设计,并且无论是Module属性里,还是彼此的依赖性上都不会出现问题。
更方便的生命周期操作:
比起Eclipse通通放进右键菜单的行为,IntelliJ IDEA有着单独的窗口可以完成Maven的操作。你可以针对不同Module进行 Clean Compile Package Install等操作,各个Plug-in的操作也一清二楚。
完美的依赖性管理:
由于Maven会把所有依赖的包放在本机的一个目录下,所以实际上是脱离Project本身存在的。IntelliJ IDEA引入了一个External Library的概念,所有的Maven依赖性都会放在这里,和项目自带的库区分开。并且Module之间会智能的判断,你不需要Maven Install来进行引用代码的更新。
动态更新:
每当Maven相关的设置更改时,例如修改了pom的依赖性,添加删除Module,IntelliJ IDEA会提示你进行更新。这种更新实际上就是运行了Maven,所以你不许要手动运行Maven Compile来进行更新,也不会像Eclipse里遇到莫名其妙的问题。
5. Maven 安装
到http://maven.apache.org/download.html 下载最新的Maven版本,我下载的版本为最新的apache-maven-3.0.4。推荐使用最新的Maven 3,因为比以前的Maven 2性能更好,而且完全兼容Maven 2。
下载好以后,解压到一个目录,我的目录为 D:\apache-maven-3.0.4,接着配置Maven环境变量M2_HOME为你解压的目录,如下图新建M2_HOME变量并追加到Path后面:


如果要在CMD控制台运行Maven命令的话,还需要配置Jdk环境变量,因为我接下来的操作都是基于IntelliJ IDEA,所以就不用配置JDK环境变量。
6. Maven 与IntelliJ IDEA完美使用(基于IntelliJ IDEA 12)
打开IntelliJ IDEA,新建一个Maven项目,如下图,项目名称为mymaven

选择Maven模版

创建过程中,配置Maven主目录


创建好后的目录结构如下图,IDEA创建了src/main/resources(自动创建)、src/main/java(手动创建)、src/main/test(手动创建)、以及pom.xml文件(自动创建)

按照Maven约定,项目的主目录位于src/main/resources、src/main/java中,测试目录位于src/main/test 中,所以我们在最终打包项目的时候,只包含主目录代码,不会包含测试目录里的代码,而测试目录里的代码只会在测试时候用到。
最后pom.xml这个文件是我们Maven项目的核心文件,POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖。

project:是xml文件的根元素,我们主要关心根元素下的子元素
modelVersion:定义了当前POM模型的版本,Maven 2 或Maven 3 只能是4.0.0
groupId:定义了项目属于哪个组,一般来说这个网网和公司或组织关联,比如说,你所在的公司为mycom.那就应该定义为com.mycom.mymaven,mymaven为项目名称
artifactId:定 义了当前Maven项目在组中的唯一id,例如HelloMaven这个项目,我则把他定义为hello-maven,还例如spring项目,他的 groupId为org.springframework,对于content项目来说artifactId则为spring-content,web项 目则为spring-web
最后我们使用IntelliJ IDEA来用Maven编译我们的代码,打开Maven Projects菜单,如图,选中clean、compile并右键点击Run 'hello-maven[clean,compile]'按钮即可。



根据输出结果我们看到,clean命令让Maven先清理target目录,Maven一般认为项目的输出目录为target,然后执行resource任务,现在为定义项目资源,所以暂时略过,最后执行编译任务!
Maven 与 IntelliJ IDEA 的完美结合的更多相关文章
- Idea for Mac 过期 IntelliJ IDEA 2017 完美注册方法(附idea for Mac破解方法)
Idea 不能使用了: 开始破解: (1)首先下载 jar包: https://download.csdn.net/download/engerla/10573069 放到位置: /Applicati ...
- Maven 在 IntelliJ IDEA 中的使用
一.概述 Maven 为构建软件,与 Gradle 类似,也能以插件的方式在 IntelliJ IDEA 中得到使用. 同样地,你也可以配置环境变量,这样就能够在命令行中进行操作了. 二.使用方式 其 ...
- 解决maven 在intellij IDEA 下载依赖包速度慢的问题
解决maven 在intellij IDEA 下载依赖包速度慢的问题 参考:https://www.jianshu.com/p/63a593700ebc
- Jersey 2 + Maven + Tomcat + IntelliJ IDEA 搭建RESTful服务
本文参考以下内容: [1] Starting out with Jersey & Apache Tomcat using IntelliJ [2] [Jersey]IntelliJ IDEA ...
- Maven(四)之Maven在IntelliJ IDEA的配置与使用
前面介绍了Maven的一些基本知识,这一篇讲一下在IntelliJ IDEA配置和使用Maven 一.配置Maven 在File->Settings->Build,Execution,De ...
- IntelliJ IDEA 2016 完美破解+汉化补丁
百度网盘下载地址:链接:https://pan.baidu.com/s/1cB6XY-N02eRKgGs1kzvqKQ 密码:6pse IntelliJ IDEA 2016是一款JAVA语言发开发工具 ...
- IntelliJ IDEA 2017 完美注册方法及破解方法
本文使用破解方式注册. 下载破解文件JetbrainsCrack-2.6.2.jar 下载地址: http://idea.lanyus.com/ 开始破解 一.将下载的 JetbrainsCrack- ...
- config maven in intellij IDEA
Config maven in IDEA File ->Settings->Build,Execution.Deployment->build Too ...
- IntelliJ IDEA(社区版)学习记录
一.下载 地址:官网下载地址 二.安装 运行安装程序,一路下一步.注意选择安装路径. 三.基本概念 project:相当于donet下的解决方案 module:相当于donet下的项目工程 四.IDE ...
随机推荐
- [转]bootstrap的table插件动态加载表头
原文地址:https://blog.csdn.net/abubu123/article/details/78060321 bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫每个列表 ...
- Redis (1) —— 安装
Redis (1) -- 安装 摘要 介绍Mac OS X安装Redis基本方法 版本 Redis版本: 2.8.24 内容 下载Redis包 地址:http://download.redis.io/ ...
- map-reduce 优化
map阶段优化 参数:io.sort.mb(default 100) 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘. 而是会利用到了内存buffer来进行已经 ...
- linq操作符:元素操作符
元素操作符仅返回一个元素. 一.Fitst操作符 First操作符将返回序列中的第一个元素.如果序列中不包含任何元素,则First<T>方法将引发异常.来看看First()方法的定义: 从 ...
- ApplicationContextAware接口的作用
1/============== 在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器 ...
- Linux系统下邮件服务器的搭建(Postfix+Dovecot)
对于网站来说,发送各种例如注册通知的邮件是很基本的一个需求,之前我一直用的是腾讯的企业邮箱,感觉挺方便的,直接可以绑定QQ邮箱接收邮件,网站配置一下SMTP也就可以发出邮件. 但是在前几天由于有重要信 ...
- postgresql远程连接中断的处理
在网络上连接远程服务器postgresql时,不活动时间稍长就会自动断开连接,不利于操作. 琢磨了一下,服务器上使用以下网络配置时,解决了这个问题. #man 7 tcp net.ipv4.t ...
- underscore-1.8.3-analysis.js
// Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud an ...
- Linux修复系统命令
fsck.ext2(file system check-second filesystem ) 功能说明:检查文件系统并尝试修复错误. 语法:fsck.ext2 [-acdfFnprsStvVy][- ...
- Selenium常用操作汇总二——如何操作cookies(转)
Web 测试中我们经常会接触到Cookies,一个Cookies主要属性有”所在域.name.value.有效日期和路径",下面来讲一下怎么操作Cookies. import java.ut ...