现在的位置: 首页 > 综合 > 正文

Maven真的有那么好吗

2012年11月30日 ⁄ 综合 ⁄ 共 1852字 ⁄ 字号 评论关闭

http://1.1lifes.sinaapp.com/?p=202

之前一直听说maven的大名,直到它后来者居上,但因为工作环境,一直没有使用过maven,对它的很多功能都很期待。这不,这次换了工作新公司使用maven,也就自然而然的切换到maven了。使用maven时间不长,但对于maven我还是感觉到很多的不爽,姑且来说说自己浅显的认识。

       先说说maven的优点吧。

        一、maven支持工程模版。这个也是“约定优于配置”精神的体现,maven的eclipse插件和命令行都支持使用选择的Archetype信件maven工程。这个主要是有利于团队合作开发,规定了各个文件夹的用途。其实在没maven之前,这种工程文件布局就已经是一种广泛的共识了。只是它略带强制的意味。      

—- project

             |– pom.xml (pom)

             |– src

                    |– main

                                |– java

                                |– resources

                     |– test

                                |– java

                                |– resources

       二、依赖库的管理,这应该是它最大的优点了。这个简直是颠覆性的。想想没有它之前我们下载jar包是多么的痛苦,更别提升级jar包了。有了maven只要在pom最相应的添加和修改即可。但这个有一点小小的不爽,如果是之前下载jar包,一股脑下载和依赖的就行,现在要找groupid artifact version。幸好这个网站不错,推荐:http://mvnrepository.com

       三、扩展性很好。可以方便的支持各类插件,涉及到方方面面,比如编译、打包、依赖检查、web容器启动,用例执行等等。

        四、pom文件的继承。大项目,一般子项目(maven module)很多,为了防止父pom过大不易维护,子项目单独使用的jar只在自己的pom设置即可。

        丰富的资料,权威指南 等等其他方面的优点也有,这里不一一列举了 ………….

        但它确实还有很多不爽的地方,足以让人崩溃。可能正是由于它的一些优点导致了它的缺点。我使用感觉最深的就是不能完全的热部署。先说说我现在的情况。我的一个maven功能有多个module,其中一个是web module,这个是我程序对外的入口。我使用了jetty的maven插件,用于一站式打包运行。

        先说说jetty maven插件的使用。

        普通使用方式:一、maven命令打包 mvn clean install 二、启动服务器 mvn jetty:run

        eclipse集成 debug启动方式。具体 参见

http://simile.mit.edu/wiki/How_to_debug_mvn_jetty:run_in_Eclipse

        之前说了,我的工程结构,使用jetty:run的方式肯定不行,这个只能运行web module中target的内容;我现在是使用jetty:run-explored的方式,这样的话java代码是可以热部署的,但jsp之类的文件就不行了,需要人工拷贝过去。无奈,附上我后来写的bat文件,内容如下:

w:
cd W:/tools/eclipse/workspace_elifes/elifes
call mvn clean install
cd W:/tools/eclipse/workspace_elifes/elifes/elifes-web
set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y
call mvn jetty:run-exploded

这个还存在一个问题,因为这个都是通过eclipse提供的执行外部工具功能,启动后的运行日志内嵌的控制台(console)并不能感知java类给出超链接显示,这也是不方便调试的一个点。

     如果是用ant + eclipse wtp开发的模式应该就没这么痛苦了。

     如果你有好的解决方式,请告知我,万分感谢!

抱歉!评论已关闭.