我们目前有一个大的Maven 2项目,它是许多具有复杂依赖关系的单独独立项目的集合,除了一些常见的父POM用于构建。最后,我们总是将应用程序作为一个整体发布,所以我宁愿将其转换为一个或几个大项目。
是否有人有过如何优化大型项目的持续集成构建的经验。 Maven或Hudson的增量构建功能是否有用?在一个模块中只做了一点小改动时,我宁愿不要等待2个小时。
另一方面,可以肯定的是,您始终必须至少重建并重新测试已更改模块的所有直接和间接依赖关系。这也是我们目前正在与Hudson合作,自动触发所有相关工作。
为同一个项目拆分成多个构建作业是否有效?我通常不喜欢在服务器上有工件,其他所有其他生成的东西,如报告,文档等可能都已过时。
感谢您的任何想法。
答案 0 :(得分:8)
我刚做了一些测试,因为我发现Maven并不真正支持增量构建。没有任何插件Maven实际上有危险的行为。如果您更改某个模块中的代码并在没有事先清理的情况下进行编译,则相关模块将不会重建,这意味着它们会引用旧的过时版本的依赖项,并且不会对更新的代码做出反应。
使用增量构建插件,可以在不干净的情况下构建。每个更改的模块都会被重建,所有依赖项都将被清理和重建。但是,在我的情况下,编译仅使用10%的构建时间,90%用于测试。当我安装/部署所有测试时再次执行,因此增量构建插件的时间效益非常小。
所以我仍然只看到在Hudson中拆分构建的选项,这在我看来并不理想。
答案 1 :(得分:6)
我强烈建议不要分成不同的构建工作。根据我的经验,这可以通过上游和下游依赖关系迅速失控。增量建筑非常适合您的需求。如果直接设置依赖项,则只会更改更改的工件并重建其依赖项。
如果它们是完全独立的应用程序,没有或只有很少的依赖性,我会拆分构建作业(如果那是真的那么它们不应该在同一个反应堆下,因此增量构建是不可能的)