Maven 与 IntelliJ IDEA 的完美结合

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

1. 什么是 Maven,为何要使用 Maven 而不是 Ant java

Maven简单来讲是一个项目管理工具,被认为是Ant的替代品或者继任者。事实上Maven的功能要远远超出Ant,它不只仅提供编译的脚本,更是在整个项目周期中提供测试,发布,文档生成等功能,而且有着独特的依赖性管理方法。可是强大的功能的代价就是复杂的使用方法,第一次使用Maven每每须要将近半个小时的时间(国内网速)来下载一个本地的依赖库,这无疑会使不少开发人员“知难而退”。虽然广受诟病,一个不争的事实就是Maven逐渐代替了Ant,使用Maven也成了Java开发人员的一个必要技能。 web

2. IntelliJ IDEA 与 Eclipse spring

在Java的世界里,Eclipse毋庸置疑是IDE中的王者,IntelliJ IDEA和NetBeans都只能生活在Eclipse的光环下。Eclipse的强大已经不用我多说了,但其实IntelliJ IDEA也是一个至关优秀的IDE,尤为体如今它的智能上。它的一个针对.Net的Clone产品ReSharper已经被愈来愈多的C#开发者所接受。IntelliJ IDEA提供了大量的智能规则来协助开发者,相似代码补全,用法的转换,格式的提示等等,当你习惯之后,你就会对那个小灯泡爱不释手。 apache

3. 选择 Maven + IntelliJ IDEA 的理由 eclipse

之因此要选择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作的要好的多,以致于你很难说出对它的不满。 maven

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后面:

imageimage

若是要在CMD控制台运行Maven命令的话,还须要配置Jdk环境变量,由于我接下来的操做都是基于IntelliJ IDEA,因此就不用配置JDK环境变量。

6. Maven 与IntelliJ IDEA完美使用(基于IntelliJ IDEA 12)

打开IntelliJ IDEA,新建一个Maven项目,以下图,项目名称为mymaven

image 

选择Maven模版

image

建立过程当中,配置Maven主目录

image 

image

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

image

按照Maven约定,项目的主目录位于src/main/resources、src/main/java中,测试目录位于src/main/test中,因此咱们在最终打包项目的时候,只包含主目录代码,不会包含测试目录里的代码,而测试目录里的代码只会在测试时候用到。

最后pom.xml这个文件是咱们Maven项目的核心文件,POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖。

image

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]'按钮便可。

image

image

image

根据输出结果咱们看到,clean命令让Maven先清理target目录,Maven通常认为项目的输出目录为target,而后执行resource任务,如今为定义项目资源,因此暂时略过,最后执行编译任务!

相关文章
相关标签/搜索