Maven 3 – 值得吗?

Maven 3testing版已经出来几个星期了,我只想得到你对Maven 3的function列表的看法。因为对我来说,只增加了两个主要function

  1. 在构build生命周期中并行执行项目
  2. 自定义生命周期

其他的一切似乎是一个错误修复或小小的改进。 所以你怎么看? Maven 3会值得期待吗?

Maven 3有什么新function? 这里有一些你可以在网上find的资料。

  • 向后兼容性 – Maven 3向后兼容,这是非常重要的(尤其是对于那些谁经历了从Maven 1到Maven 2过渡)。
  • 无版本的父元素 – Maven 3将删除在子模块中指定父版本的需要。 是伟大的(在Maven 3.1中)。
  • Mixins – 对于POM组合(在Maven 3.1 AFAIK中)。
  • 使用属性的XML POM格式 – 您可以使用属性而不是元素。
  • Polyglot Maven – 你现在可以用不同的语言编写你的POM文件(我个人不会被XML格式困扰,所以我不确定我会经常使用它)。
  • 扩展点 – 装饰生命周期或插件(钩住行为,而不是扩展插件)。
  • 可查询生命周期 – 执行计划和执行的解耦。
  • Plugin-API中的更改 – 这更加针对插件开发人员(注释,而不是javadoc标签,扩展点,可查询生命周期)。
  • 更好的错误和完整性报告 – 错误更加清晰,并链接到Maven 3 wiki以获得详细的解释。 用户将享受这一点。
  • Mercury – 完成重写神器parsing系统(现在是专用产品)实际上,Maven 3使用Aether而不是Mercury。
  • Maven Embedder – 这对于IDE和构build工具(可以“监听”构build过程)来说非常好。
  • 增量构build支持 – 对M2Eclipse特别有用(性能提升很大)。
  • 从Maven核心站点提取的网站和报告不起作用(将在最终版本中修复) ,报告确实(但是您被邀请赞成Sonar等外部质量工具)。
  • Maven shell – 一个优化的执行环境(Maven Shell 非常棒 )。

总之,你并不完全错误,表面上没有太多的变化(虽然我真的很喜欢更好的错误报告,只是不能等待无版本的父元素)。 但引擎盖下的变化使得Maven 3 更快,而且这是巨大的。 而且我希望在提供新的可能性方面有很大的创新(尽pipe如此)。

最后,性能提升已经足够让我值得(在更短的时间内build设非常有价值 ),其他的东西都是奖金。 而且由于我没有广泛使用网站插件,因此我已经在一些构build中使用了Maven 3,时间超过了4个月,我对它感到非常满意。

也可以看看

  • Maven 3 Beta指南
  • Maven重新加载(来自devoxx)
  • Maven 3.x预览
  • Maven中的新function3
  • 杰森范Zyl Maven的未来:Maven 3

Maven 3的想法是取代Maven 2没有任何问题…目前有一些(特别是网站)。 我build议使用Maven 3testing当前现有的Maven 2项目,看看是否会出现一些问题。 内部完整的代码已经被重构等等,以使新的改进成为可能。 删除了核心的一些部分(如网站生成等)。

不,不像matrix说的那样兼容。 2和3之间有许多不相容的东西,并有页面指向行为。 如果你在一家公司从事企业项目,你可以放心,你会遇到这些问题。

至于性能好,如果你运行企业build设不是10k-100k代码build设…系统150万线如何? 这在企业中比较常见。 如果您的软件构build2-4小时,并且仍然需要持续集成,那么您将进行并行构build和testing。 Maven 3在这一点上很方便…但是在这一点上,根据目标(依赖:树使用遗留机制,而定期构build目标依赖于Aether),树决议/类path是不同的。 在软件打包部署之前,你不能依靠检查类path来回忆常春藤/蚁的问题(你在生产中没有本地的Maven回购,是吗?但是你仍然需要执行软件审计,对不对?)

他们删除了“-r”选项,并用一个非常复杂的系统取而代之。

Maven鼓励复制/粘贴poms。 我希望他们能在3.0中解决这个问题。 他们放弃了“mixins”function,直到maven 3.1。

除了构build性能和一些小错误修复之外,这并不是真正值得的麻烦。