世界顶尖运动队教练的成功秘诀
本文列出了来自于顶级教练Marc Lammers的9条原则,他是在打造世界最佳曲棍球队的过程中发现这些原则的,文章把这些原则映射到了软件开发实践之中。
作者 Ryan Slobojan译者 曹云飞 发布于 2008年2月3日 下午7时19分
近来,有很多关于Maven的有用性的辩论。Maven是一个基于Java的构建和依赖管理工具,应用在很多项目中。InfoQ深入调查了这个辩论以理解当前的问题是什么以及辩论得出了什么结果。
Apache Tapestry和Apache HiveMind的创建者Howard Lewis Ship最近发表了一篇博文 ,在其中他描述了在他目前正在做的一个项目使用Maven碰到的一些问题:
在Eclipse和IDEA中,Maven都是非常缓慢、bug多而且不稳定的。IDEA 7比Eclipse(带有0.0.12Maven插件)好一点点,因为前者的同步功能是很直接的。然而,要让Maven工作,看起来需要没完没了的调整、修补和祈祷。
Maven在核心有一个伟大的思想(真正很好地解决依赖管理的问题),但是采用了一个非常糟糕的插件系统来执行构建。令人痛苦之处是,一个在星期一工作的好好的构建可能在星期二失败,原因是有新的、破损的插件被发布到中心Maven仓库。
Ship还说明了缺乏文档是理解和使用Maven的一个主要障碍,他推荐使用Ivy作为候选的依赖管理系统。Eugene Kuleshov 指出将插件版本号加入Maven的pom.xml文件可以解决破损插件的问题,而Charles Miller 回应说在Maven的用户或者安装指南中都没有这个建议。
Don Brown最近也撰写博文说他创建了一个新的Maven构建,解决了他在Maven 2中发现的一些问题,包括加入HTTP连接池和并行制品下载。在Maven的这个分支上工作正在进行着,这些变化有希望重新整合进入主干版本中。
还有很多人加入了这场辩论中,Jonas Fagundes质疑为什么Grails不用Maven,并且评论:
Maven是一个奇妙的工具,我们希望每种语言都有这样的工具。它是一个模块化项目构建工具。它能够管理依赖、构建周期、测试、 打包并且在仓库中发布你的制品。它是一个项目构建工具,领先于通常的构建工具(实际上它的第一个版本是在Ant之上的一层)。它为你的项目提供了一个缺省 的路径布局,这些缺省路径真的很美妙,你开始需要做的仅仅是选择一个名称来创建你的项目和缺省包。所有其它的事情都已准备停当,如果你的需要有所不同,你 可以提供配置,在后者情况下你可以提供一个新的被maven仓库所管理的插件(插件只是另外一种依赖,在你配置了你的pom文件之后,插件会被自动下 载)。它早在rails社区提出惯例优于配置这个术语之前就采用了该策略。
G2One的CTO,Graeme Rocher 回应了Fagundes并且说明了为什么Grails不使用Maven,他说Grails的主要思想是简化Java EE:
现在Maven完全是Grails思想的反面。为什么每当我要创建一个项目的时候我不得不去读他们的用户手册?我的意思是我没有办法记住这些垃圾而且他们的文档十分恶心,难以上手。Rocher还指出Grails有Maven的支持,但不是缺省的,而且他怀疑Maven最终会被Gant、Raven 或者Buildr这样的构建工具所替代。
我认为只有Java人会乐于接受象Maven这么复杂的构建系统。其他任何社区都会说“这是什么玩意?”。对于我来说,Maven就是构建系统的EJB2:过于复杂,过于工程师化而且需要一个智能的、有代码生成功能的IDE与其一起工作。
Matt Raible 针对Rocher的帖子发表了跟帖,指出了两个主要问题,并且对问题提出了潜在的解决方案:
Raible补充道:
我仍然是一个Maven的粉丝,主要是因为他极大的简化了AppFuse的维护和发行工作。当我将来做GWT、Seam或者 Grails开发的时候,我会尝试使用Maven来做开发工作。为什么?因为我已经学会了如何使用Maven而且我没有感到其他人谈到的痛苦。我认为在真 正的大型项目(例如产生超过30个WAR的构建)中Maven真的很炫。在真正的大型项目中,一个基于Ant的系统会变得难以承受而且难于维护。不仅如 此,而且用Ant是非常难以维护一个模块化的构建系统(你可以构建/测试/部署一个单独的WAR)的。根据我的经验,真正大的基于Ant的系统总是处理那 些最新的东西,而基于Maven的系统各个部分之间是互相依赖的,需要你保持它们最新。Maven的确需要你更聪明一些并在你的子项目上运行“mvn install”,但是我宁愿这样也不愿意等5分钟来让Ant仅仅为了运行一个测试而处理所有的事情。
其他一些意见:
在国内技术社区JavaEye上,也有许多关于maven的争论 :
daquan198163 —— Maven N宗罪:在公司内开发项目时,类库定下来后,为了稳定基本也不会升级了,所以它的最大优势体现不出来,需要搭建私服,简直没事找事儿插件比Ant少,学习成本高,强制用它的目录结构,与IDE集成不好,配置麻烦
robbin —— 所以我从不用Maven,最多用点ant
Readonly —— 共享类库可以用IDE reference project解决,公司内部项目给常用的lib建立一个project,从CVS上check out,其他工程项目都依赖这个project就可以了,ant build也直接引用这个项目的jar就可以,项目体积照样只有几百K。
ray_linn —— Maven非常难搞,俺承接了一个老外的项目后期,结果就是它~就是它~MAVEN,不断的报告某个库找不道(明明在服务器上),最后老外和俺都失去调试 MAVEN的兴趣,大家和平分手。Remote team用Maven ,万一对方是在俄罗斯或者南美洲就死掉了。靠的,为什么不能是visualstudio的project file?
alexma —— 我们是 Maven 和 Ant 配合用,主要用 Maven 的依赖管理,其他 build 过程全部用 ant 完成。就我个人的使用经验,Maven依赖管理还是挺好用的。
dlee —— 对比一下:Maven跟Ant的关系,SVN跟CVS的关系,可以下结论说,Maven是个失败者。Maven确实是让人讨厌的一个东西,笨重、学习成本 高、完全技术化的思考方式。自称是一个优秀的项目管理工具,但是除了极度狂热的技术Fans,估计没有人愿意使用它来做项目管理。Ant的XML脚本很多 时候做事情都没有bash+sed+find等Unix工具用起来快捷。我们以前做的自动化安装脚本全部使用bash。 bash和这些工具在Windows上也可以用。M$直到bash诞生将近20年之后(bash的祖先Bourne Shell诞生30多年之后)才捣鼓出来了一个较为像样的PowerShell。
jasongreen —— 多么好的依赖管理啊,我甚至把javascript也打到jar包里,用maven来管理,真是太方便了。当然,maven的插件是少了点。不过这么好的东西,插件自然会慢慢多起来。
dengyin2000 —— 好用。 用它的eclipse wtp插件。
koalant —— mvn idea:idea , mvn eclipse:eclipse 可以生成对应 ide 的工程文件, 尤其是在 intellij 中,通过内置的 maven 插件,直接 debug Jetty:run , 连 tomcat 都不用了.
你如何看待Maven?
查看英文原文:Debate: Is Maven the right tool for builds?
本文由Per Jacobsson所作,目标读者为有意了解Lisp的Java开发人员。文章探讨了当前可以运行于JVM上的不同Lisp方言,以明快简洁的方式介绍了Lisp程序设计工作机理和其独特之处,并在最后演示了Lisp代码同Java系统的整合过程。
本文以一个实际应用的例子为引子,探讨Ruby/Rails在非传统web系统中应用,以及研究如何定制以Rails为基础的领域特定的MVC框架。
本视频对云计算进行了简要的介绍,主要包括了五部分内容:首先带大家认识“云”,然后对计算机的发展过程进行了阐述,接着介绍了业界现状和企业级/世界级计算的新布局,最后对云计算做了一下展望。
在这篇文章中,Bryon Jacob和Chris Berry介绍了AtomServer,一个基于Apache Abdera的完整Atom存储实现。在去年,作者一直致力于为其雇主——Homeaway——实现一个Atom存储,现在已开源了其Atom存储框架:AtomServer。
开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。
InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。
7 条回复
回复