如何使用Maven增强Integration构建

时间:2011-04-14 22:36:47

标签: maven

我需要构建大约20个模块,以及如何使用maven 2.0 +

以更快的方式实现这一目标

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

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

目前需要近一个小时。请咨询。

由于

2 个答案:

答案 0 :(得分:2)

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

  1. “快速”将成为每个构建的一部分
  2. “慢”的那些将成为“慢”构建的一部分。 “慢速”构建每天运行几次。
  3. 通常,单元测试很快并且成为“快速”构建的一部分,而集成测试是“慢速”构建的一部分。

    我会小心并行测试:他们可以创造出比他们解决的问题更多的问题。

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

答案 1 :(得分:1)

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,这取决于commons。现在,如果您对persistence项目进行了提交,为什么需要编译,测试和打包commons,因为这个项目没有改变? incremental build选项仅重建已修改的项目以及依赖模块。在我的示例中,persistence将被重建,business