我身边有20个模块需要建立和如何我可以更快地使用maven 2.0+我怎样才能提高使用Maven
目前我的构建从根pom.xml中使用哈德森 只是开始实现这一集成构建调用mvn干净安装
我不想跳过任何单元测试以及。
目前需要将近一个小时。请咨询。
感谢
我身边有20个模块需要建立和如何我可以更快地使用maven 2.0+我怎样才能提高使用Maven
目前我的构建从根pom.xml中使用哈德森 只是开始实现这一集成构建调用mvn干净安装
我不想跳过任何单元测试以及。
目前需要将近一个小时。请咨询。
感谢
希望我有更多的“高科技”的建议,但我会通过分裂测试开始分成两组:
通常情况下,单元测试很快并且成为“快速”构建的一部分,而集成测试是“慢”构建的一部分。
我会小心使用并行测试:它们可能会产生比解决问题更多的问题。
您可以在这里的Maven阅读更多关于集成测试的实现:http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing
什么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例如...
最后,有与Maven一个有趣的选择,因为2.1版:增量生成。如果您使用Hudson/Jenkins,当您单击Maven构建选项的“高级”按钮时,此选项可用。
原则是只构建受您的更改影响的模块(即提交)。我们举个例子吧。我有这样的项目:
project
+- commons
+- persistence
+- business
的business
项目是依赖于persistence
,这是依赖于commons
。现在,如果您在persistence
项目上有提交,那么为什么您需要编译,测试和打包commons
,因为此项目没有更改? incremental build
选项将只重建修改的项目以及相关模块。在我的例子中,persistence
将被重建,以及business
。
嗨romaintaz,感谢您的有价值的输入如何在哈德森配置增量构建? – sharp 2011-04-21 17:12:50
您是否正在运行Maven 3?也许你可以运行你的单元/集成测试parellelized?构建的瓶颈是什么?集成测试/编译/生成? – khmarbaise 2011-04-14 23:19:49