maven构建需要太长时间

时间:2014-01-13 12:07:54

标签: java spring maven spring-mvc spring-batch

我们的应用程序的全局版本(30个Maven模块)花费了太多时间(15分钟) 我们有单元测试和集成测试。

整合测试消耗了主要时间(60%)。

技术是:春天,春天mvc,春天批...当然还有Maven。

因此,我们的开发人员没有动力保持这种做法(在提交之前全部构建)

我想增加构建时间,所以我测试了许多方法:

  • Parralal build:mvn -T 1C ==> ko,我们消耗开发者机器的所有资源,因此在构建期间开发人员不能做任何事情。
  • 按个人资料(前台,批次,连接器,公共区)组织模块==> Ko我们的模块与我们的所有构建完全相关。

您是否有一些建议,一些经验表明,如何在一个大项目中增强Maven的构建时间。

提前致谢。

5 个答案:

答案 0 :(得分:6)

不要在正常配置文件中运行集成测试,只允许开发人员在运行单元测试后检入。

在单独的服务器(构建服务器或持续集成服务器,如Jenkins或类似服务器)上运行集成测试。让构建服务器通过电子邮件发送检查错误代码的开发人员。

在我们的办公室,我们还有大屏幕显示每个模块的绿色/黄色/红色标志,因此每个人都可以看到模块是否不稳定(以及自上次稳定构建以来谁已登记)。

答案 1 :(得分:1)

让构建服务器自动执行完整构建并在有人签入后运行测试。如果构建或测试失败,请立即以一些合适的方式标记它,包括通过电子邮件发送签到的人。

答案 2 :(得分:1)

  

整合测试消耗了主要时间(60%)。

通常,您不希望在开发人员计算机上构建期间运行集成测试。只是排除他们。但请确保在持续集成服务器上运行它们。

答案 3 :(得分:0)

  1. 将内存配置调整为最佳,例如:将此行添加到mvn.bat设置MAVEN_OPTS = -Xmx512m -XX:MaxPermSize = 256m

  2. mvn的清洁阶段通常会删除目标文件夹。相反,如果我们重命名目标文件夹,清洁阶段会更快。

  3. -Dmaven.test.skip = true将跳过测试执行。

  4. 将-Denforcer.skip = true添加到mvn命令行参数(这是强制执行maven,jdk等版本,我们可以在初始运行后跳过它)

  5. 在构建阶段禁用非关键操作:分析,javadoc生成,源包装。这将节省大量时间。

  6. Spawnig新进程也有助于时间改进-Dmaven.junit.fork = true(将junit测试分成新进程)-Dmaven.compile.fork = true(分组编译)

    < / LI>

    希望它有所帮助。

答案 4 :(得分:0)

  

所以我们的开发人员没有动力去保持这种做法......   ......我们   消耗所有开发者机器的资源,以便在构建过程中   开发者不能做任何事情

如果开发人员不希望在提交之前构建所有的主要原因是在maven构建期间他们的计算机是无用的(由于maven使用所有可用资源),让他们指定多少资源maven应该使用。

示例(使用Windows cmd),而不是:

mvn clean package

你可以使用:

start /affinity 3 mvn clean package

在这种情况下,maven将使用2个cpu核心(我有8个cpu核心),所以在maven构建生命周期中,我仍然可以在我的机器上工作。

  

整合测试消耗了主要时间(60%)

我会说测试很重要,但你可以节省一些时间来跳过测试:

mvn clean package -DskipTests

有关处理器关联性的更多信息,请访问:http://www.techrepublic.com/blog/windows-and-office/change-the-processor-affinity-setting-in-windows-7-to-gain-a-performance-edge/