【问题标题】:How can I boost the Integration build using Maven如何使用 Maven 提升集成构建
【发布时间】:2011-04-14 22:36:46
【问题描述】:

我需要构建大约 20 个模块,以及如何使用 maven 2.0+ 以更快的方式实现这一目标

目前我使用 hudson 从根 pom.xml 开始构建 只需调用 mvn clean install

我也不想跳过任何单元测试。

目前大约需要一个小时。请指教。

谢谢

【问题讨论】:

  • 你在运行 Maven 3 吗?也许您可以并行运行您的单元/集成测试?构建的瓶颈是什么?集成测试/编译/生成?

标签: maven


【解决方案1】:

希望我有更多“高科技”建议,但我会先将测试分为两组:

  1. “快速”将成为每个构建的一部分,并且
  2. “慢”版本将成为“慢”构建的一部分。 “慢”构建每天运行数次。

通常,单元测试很快并成为“快速”构建的一部分,而集成测试是“慢”构建的一部分。

我会小心并行测试:它们产生的问题比解决的问题多。

您可以在此处阅读有关 Maven 集成测试实施的更多信息:http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing

【讨论】:

    【解决方案2】:

    Sasha O said 真的很重要。如果您的构建需要这么多时间,那么您的测试可能不是简单的单元 测试。因此,将测试分为两类将是一个好主意。您的快速测试应该是真正的单元测试,这意味着它们不应涉及 Spring 上下文、重要的磁盘 I/O 或真正的数据库连接(您可以使用内存数据库,例如 H2 或 HSQLDB)。

    如果您使用 TestNG 进行测试,则可以使用 groups feature 拆分您的测试。如果您使用的是 JUnit@Category 会很有用。使用 JUnit,这个@Category 并不完美,而it was a problem for me。我通过creating a custom JUnit Runner 解决了我的问题(解决方案也不是完美的,但可能会有所帮助)。

    另一个建议:也许您可以考虑为您的持续集成服务器使用更好的硬件。事实上,编译和测试执行可以通过使用性能更好的计算机得到真正的改进。同样,如果您没有使用最新的 JDK,您可以迁移到 JDK 1.6,例如...

    最后,从 2.1 版开始,Maven 有了一个有趣的选项:增量构建。如果您使用的是 Hudson / Jenkins,则当您单击 Maven 构建选项的“高级”按钮时,此选项可用。

    原则是只构建受您的更改(即提交)影响的模块。让我们举个例子。我有这个项目:

    project
      +- commons
      +- persistence
      +- business
    

    business 项目依赖于persistence,而persistence 又依赖于commons。现在,如果您对persistence 项目进行了提交,为什么还需要编译、测试和打包commons,因为这个项目没有改变? incremental build 选项只会重建修改后的项目,以及依赖的模块。在我的示例中,persistence 以及business 将被重建。

    【讨论】:

    • 嗨 romaintaz,感谢您提供宝贵的意见,如何在 Hudson 中配置增量构建?
    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 2013-02-03
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多