你是否正在学习Maven?是否因为Maven难用而又不得不用而苦恼?是否对Eclipse于Maven的冲突而困惑?
那么我告诉你一个更直接更简单的解决方案: IntelliJ IDEA!
什么是 Maven,为什么要使用 Maven 而不是 Ant
Maven
简单来说是一个项目管理工具,被认为是Ant的替代品或者继任者。事实上Maven的功能要远远超出Ant,它不仅仅提供编译的脚本,更是在整个项目周期
中提供测试,发布,文档生成等功能,并且有着独特的依赖性管理方法。但是强大的功能的代价就是复杂的使用方法,第一次使用Maven往往需要将近半个小时
的时间(国内网速)来下载一个本地的依赖库,这无疑会使很多开发人员“知难而退”。虽然广受诟病,一个不争的事实就是Maven逐渐代替了Ant,使用
Maven也成了Java开发人员的一个必要技能。
IntelliJ IDEA 与 Eclipse
在Java
的世界里,Eclipse毋庸置疑是IDE中的王者,IntelliJ
IDEA和NetBeans都只能生活在Eclipse的光环下。Eclipse的强大已经不用我多说了,但其实IntelliJ
IDEA也是一个相当优秀的IDE,尤其体现在它的智能上。它的一个针对.Net的Clone产品ReSharper已经被越来越多的C#开发者所接受。
IntelliJ IDEA提供了大量的智能规则来协助开发者,类似代码补全,用法的转换,格式的提示等等,当你习惯以后,你就会对那个小灯泡爱不释手。
选择 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做的要好的多,以至于你很难说出对它的不满。
来看看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里遇到莫名其妙的问题。
总的来说,IntelliJ IDEA对Maven的支持确实很好,它本身也是一款非常优秀的IDE,有兴趣的朋友不妨试试看。