闲话maven m2eclipse不再支持nested module的原因
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有一个重复性更少却能同样完成该工作的方法。Maven便提供了这样一种选择,将你的注意力从作业层转移到项目管理层。Maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页.
我严重支持大范围使用maven,但对于内嵌module的支持,我表示怀疑。在使用eclipse进行java开发的时候,要使用maven,m2eclipse插件是必不可少的。之所以在新版本的m2eclipse不再支持nested module的功能了,也许是m2eclipse的人员和我一样有相同的担忧。
1)项目内嵌导致工程脆弱
maven的目标是松耦合项目与项目之间的联系,任何一个项目不用关心所依赖项目的变化和生命周期,关联的项目不用管是不是在你的eclipse workspace中,还是本地的仓库中还是远程的仓库里。但是一旦有了项目的内嵌,这就变成了紧耦合的项目关系,你必须关心子文件夹里的东西,整个项目变得更加脆弱。
2)浪费时间
如果你的项目有无数的内嵌子项目,一旦你修改了其中一个子项目的代码,你不得不全部重新检出、测试、打包,这样的生命周期都必须要花时间来做,不必须的时间浪费在这里了。
3)鼓励独立的项目反对代码重用
通常情况下,maven鼓励大家把具有独立功能的模块独立成单独的项目。如果你的项目有一部分代码需要被别的项目重用,你应该做的事情是把这部分代码重构出来并成为独立的项目,然后再在两个项目中都添加依赖。这样子做的好处在于,分隔的关系让你的项目之间变得非常清晰。但如果用了maven的项目内嵌模块的功能,东西南北的项目都紧紧地绑在一起,项目将变得越来越难被其他项目再重新调用。
4)ant痛苦的历史
我们都还记得ant脚本时代的一个build的xml:执行缓慢、很难被其他工具使用、很难合并。
5)m2eclipse的nested module为什么要去掉?
不是去掉了,m2eclipse将子项目嵌套显示变成了扁平的显示。一个多内嵌模块的项目,只需要使用import as maven projects 即可,在workspace中将以扁平的形式显示。
如果你有什么不同的见解,欢迎探讨。
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:54chen 来源: 五四陈科学院-坚信科学,分享技术
- 标签: m2eclipse maven nested
- 发布时间:2011-02-15 22:54:50
-
[51] 转载:cassandra读写性能原理分析
-
[49] memory prefetch浅析
-
[43] 《web前端最佳实践》—高维护性css
-
[36] 深入浅出cassandra 4 数据一致性问
-
[36] MySQL半同步存在的问题
-
[35] 程序员技术练级攻略
-
[35] 不是书评 :《我是一只IT小小鸟》
-
[35] javascript插入样式
-
[35] 获取Dom元素的X/Y坐标
-
[33] MySQL vs NoSQL 效率与成本之争