我如何使用Maven增强集成版本

问题描述

| 我大约需要构建20个模块,以及如何使用Maven 2.0+更快地实现此目标 目前,我的构建使用hudson从root pom.xml开始 只是调用mvn clean install 我也不想跳过任何单元测试。 目前大约需要一个小时。请咨询。 谢谢     

解决方法

希望我有更多“高科技”建议,但我首先将测试分为两组: \“ Fast \\”将成为每个版本的一部分, \“ Slow \”将成为\“ Slow \”构建的一部分。每天运行几次“慢速”构建。 通常,单元测试是快速的,并成为“快速”构建的一部分,而集成测试是“慢”构建的一部分。 对于并行测试,我会小心:它们可能会产生比解决方案更多的问题。 您可以在此处阅读有关Maven中集成测试实现的更多信息:http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing     ,Sasha O所说的真的很重要。如果构建花费大量时间,那么您的测试可能不是简单的单元测试。因此,将测试分为两个类别将是一个好主意。快速测试应该是真实的单元测试,这意味着它们不应涉及Spring上下文,重要的磁盘I / O或真实的数据库连接(可以使用内存数据库,例如H2或HSQLDB)。 如果将TestNG用于测试,则可以使用组功能来拆分测试。如果使用的是JUnit,则
@Category
会很有用。使用JUnit,这个“ 0”并不完美,这对我来说是个问题。我通过创建一个自定义的JUnit Runner解决了我的问题(该解决方案也不是完美的,但可能会有所帮助)。 另一个建议:也许您可以考虑为连续集成服务器使用更好的硬件。确实,使用性能更好的计算机可以真正改善编译和测试执行。同样,如果您不使用最新的JDK,则可以迁移到例如JDK 1.6。 最后,从版本2.1开始,Maven有一个有趣的选项:增量构建。如果您使用的是Hudson / Jenkins,则单击Maven构建选项的\“ Advanced \”按钮时,此选项可用。 原则是仅构建受更改(即提交)影响的模块。让我们举个例子。我有这个项目:
project
  +- commons
  +- persistence
  +- business
“ 3”项目依赖于“ 4”,而依赖于“ 5”。现在,如果您提交了ѭ4a项目,为什么您需要编译,测试和打包
commons
,因为这个项目没有变化?
incremental build
选项将仅重建修改后的项目以及相关模块。在我的示例中,将重建
persistence
business
。