【问题标题】:Maven 3 - Worth it? [closed]Maven 3 - 值得吗? [关闭]
【发布时间】:2010-07-01 11:19:16
【问题描述】:

Maven 3 beta 已经发布了几个星期,我只是想了解您对 Maven 3 功能列表的看法。因为对我来说,只添加了两个主要功能

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

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

【问题讨论】:

    标签: maven-3


    【解决方案1】:

    Maven 3 有什么新功能?以下是您在网上可以找到的一些内容的小汇编。

    • 向后兼容性 - 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 - 工件解析系统的完全重写(现在是专用产品) 实际上,Maven 3 使用Aether 而不是 Mercury。
    • Maven Embedder - 这对于 IDE 和构建工具(可以“监听”构建过程)非常有用。
    • 增量构建支持 - 特别适用于 M2Eclipse(大幅提升性能)。
    • 从 Maven 核心提取的站点和报告 - 站点还不能工作(将在最终版本中修复),报告可以(但请您支持外部质量工具,如 Sonar)。
    • Maven shell - 优化的执行环境(Maven Shell 很棒)。

    总而言之,您并没有完全错,表面上并没有太多变化(尽管我真的很喜欢更好的错误报告,只是迫不及待地等待无版本的父元素的东西)。但是引擎盖下的变化使 Maven 3 更快,这是巨大的。而且我希望新提供的可能性会发生巨大的创新(尽管尚未到来)。

    最后,性能改进已经足以让我觉得值得(在更短的时间内构建是非常有价值),其他的东西都是奖金。而且由于我没有广泛使用站点插件,我已经在我的一些构建中使用 Maven 3 超过 4 个月,我对它非常满意。

    另见

    【讨论】:

    • pom 验证在 maven 3 中要严格得多。指出 maven 2 允许通过的明显错误或遗漏。仅此功能就值得在您的 maven 2 项目上运行 mvn 3 - 只是为了修复损坏的 pom。
    • @Patrick 我完全同意(这是“更好的错误和完整性报告” 的一部分)。
    • 仅供参考 POM 组合仍然不可用。尝试使用瓷砖插件作为替代方案。
    • 看起来无版本的父元素也没有发布。
    【解决方案2】:

    Maven 3 的想法是毫无问题地替换 Maven 2...目前有一些(特别是站点)。我建议用 Maven 3 测试当前现有的 Maven 2 项目,看看是否会出现一些问题。在内部,完整的代码已经过重构等,以使新的改进成为可能。从核心中删除了一些部分(如站点生成等)。

    【讨论】:

      【解决方案3】:

      不,它与矩阵所说的不兼容。 2 和 3 之间有很多不兼容性,并且存在页面指向行为。如果您在一家公司从事企业项目,您肯定会遇到这些问题。

      就性能而言,如果您运行不是 10k-100k 代码构建的企业构建...那么系统 150 万行怎么样?这在企业中更为常见。如果您的软件构建时间为 2-4 小时,并且您仍然需要持续集成,那么您将考虑并行构建和测试。 Maven 3 在这一点上派上用场......但在这一点上,树分辨率/类路径因目标而异是不可接受的(依赖关系:树使用遗留机制,而常规构建目标依赖于 Aether)。这让人想起 Ivy/Ant 问题,因为在部署软件包之前不能依赖检查类路径(您在生产中没有本地 Maven 存储库,是吗?...但您仍然需要执行软件审计,对吗?)

      【讨论】:

        【解决方案4】:

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

        Maven 鼓励复制/粘贴 pom。我希望他们能在 3.0 中解决这个问题。他们在 maven 3.1 之前放弃了“mixins”功能。

        除了构建性能和一些小错误修复之外,它真的不值得麻烦。

        【讨论】:

          猜你喜欢
          • 2010-11-05
          • 2010-09-09
          • 1970-01-01
          • 2011-01-22
          • 1970-01-01
          • 1970-01-01
          • 2011-01-14
          • 2012-12-30
          相关资源
          最近更新 更多