首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >maven构建耗时太长。

maven构建耗时太长。
EN

Stack Overflow用户
提问于 2014-01-13 12:07:54
回答 5查看 20.7K关注 0票数 12

我们的应用程序的全局构建(30个Maven模块)花费了太多时间(15分钟)。这包括单元和集成测试。大部分时间用于集成测试(60%)。

我们的技术栈由Spring、Spring、Spring等和Maven组成。我们的开发人员没有动力保持这种实践(在提交之前构建所有这些)。

由于我想提高构建时间,所以我建议使用以下方案:

  • 并行构建:mvn -T 1C将无法工作,因为这会消耗开发人员机器的所有资源,从而阻止开发人员做其他事情。
  • 按配置文件组织模块(front, batch, connector, commons)也不能工作,因为我们的模块是相互依赖的,我们必须完成构建所有

你有什么建议来改善大型项目的建设时间吗?

提前谢谢。

EN

回答 5

Stack Overflow用户

发布于 2014-01-13 12:13:41

不要在普通配置文件中运行集成测试,只让开发人员在运行单元测试后签入。

在单独的服务器(构建服务器或连续集成服务器,如Jenkins或类似服务器)上运行集成测试。将生成服务器发送电子邮件给签入错误代码的开发人员。

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

票数 12
EN

Stack Overflow用户

发布于 2014-01-13 12:20:54

  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 (分叉编译)

希望能帮上忙。

票数 7
EN

Stack Overflow用户

发布于 2014-01-13 12:14:11

主要时间消耗在集成测试中(60%)。

通常,您不希望在开发人员机器的构建过程中运行集成测试。把他们排除在外。但是,请确保在您的持续集成服务器上运行它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21090915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档