我需要构建大约20个模块,以及如何使用maven 2.0 +
以更快的方式实现这一目标目前,我的构建使用hudson从root pom.xml开始 只需调用mvn clean install
我也不想跳过任何单元测试。
目前需要近一个小时。请咨询。
由于
答案 0 :(得分:2)
希望我有更多“高科技”的建议,但我会先将测试分为两组:
通常,单元测试很快并且成为“快速”构建的一部分,而集成测试是“慢速”构建的一部分。
我会小心并行测试:他们可以创造出比他们解决的问题更多的问题。
您可以在此处阅读有关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
。