AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

LinkedIn 的 Gradle 与 Play 框架集成实践

  • 2015-04-21
  • 本文字数:1189 字

    阅读完需:约 4 分钟

用 Gradle开发 Play应用

LinkedIn 最近采用了 Play 作为 UI 开发的 Web 框架。不过随着与 Play 的集成规模越来越大,LinkedIn 正在计划用 Gradle 构建 Play 应用。

背景:代码组织

LinkedIn 围绕着公共 API 和服务组织代码仓库,每个仓库称为一个 Multiproduct 。按照 Multiproduct 组织代码的后果就是所有的构建都是多项目的。每个 Multiproduct 有数十甚至上百个项目,每个项目都会有一个或多个产出物。LinkedIn 的应用 classpath 中包含 500 多个 jar 文件。这意味着超过 500 个节点的完全解析依赖关系图。解析这个依赖关系图,严重依赖于冲突解决规则。LinkedIn 在 Multiproduct 级别解析版本,而不是在产出物(如 JAR 文件)级别。这能确保来自于同一个 Multiproduct 的所有产出物拥有一致的版本。

SBT**** 的可扩展性挑战

Play 的默认构建系统是 SBT 。虽然在大多数人印象中这两者是不可分割的,实际上从技术角度来说他们是相互解耦的。当开始构建 Play 应用时,LinkedIn 迅速陷入了 SBT 和底层 Apache Ivy 库的可扩展性挑战中。应用的依赖解析需要花费 5-10 分钟,更夸张的是,某个底层的基础项目的依赖解析需要 30 分钟以上。

集成 Gradle**** 和 Play

考虑到 LinkedIn 在过去三年半的时间里,一直在使用 Gradle 构建几乎所有大大小小的项目。而且 2015 年 Gradle 还会新增许多激动人心的功能。此外,Play 和Gradle 的集成也会让这两种技术的价值都有显著提升。LinkedIn 已经决定与 Gradleware 共同合作探索如何使之成为现实。2015 年上半年主要精力集中在如何实现和测试两者的集成,分为如下三个里程碑:

里程碑 1:用 Gradle 构建 Play 应用

  • 在这一里程碑中,开发者将可以使用 Gradle 中的 play 插件构建 Play 应用

里程碑 2:持续模式和热加载

  • 在这一里程碑中,将在 Gradle 中引入与 SBT 中的持续模式等效的“watcher”模式: gradle --watch run

里程碑 3:梦想成真

  • 最后一个里程碑的主要工作包括文档,与集成,以及 Scala 代码质量插件,此外还会增加 Scala 交互式终端功能

更多的技术细节可以参见 Github 上 Gradle 的 Play 支持说明文档

更多信息

目前里程碑 1 的功能已经完成,有兴趣尝试的读者可以从 Gradle 网站上下载 Gradle 的每日构建版本。完整的发布包中包含二进制代码、源代码以及示例项目。Play 应用示例位于“samples/play”文件夹下。其中 basic 示例演示了 play 插件的声明和必须的仓库配置; advanced 示例展示如何配置目标 Play/Scala 的版本。 m ultiproject 示例则包含了一个标准的 Gradle Multiproject 构建。

此外,LinkedIn 还对早期的构建和初步的依赖解析进行了性能评估。感兴趣的读者可以从 LinkedIn 的博客中了解更多的细节。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015-04-21 08:522807
用户头像

发布了 75 篇内容, 共 64.4 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

2023年好用的远程协同运维工具当属行云管家!

行云管家

IT运维 远程运维 远程连接 远程系统

热换站2D组态 热换机组监测控制系统

2D3D前端可视化开发

物联网 组态软件 智慧供暖 城市换热站 换热机组

保驾“双十一” 博睿数据助力电商零售迎高峰无烦忧

博睿数据

可观测性 博睿数据

「冰点还原精灵」Deep Freeze for mac 系统还原工具

加油,小妞!

Deep Freeze 系统还原

Macos硬件监测和系统维护工具:TechTool Pro for mac

加油,小妞!

系统维护 mac系统维护软件 TechTool Pro

实例讲解数据库的定义重载函数

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

定做舞台租赁LED显示屏要注意什么

Dylan

LED LED显示屏 led显示屏厂家 户内led显示屏

以终为始,依托度量指标,多种工具全面提升研发效能

之家技术

工具 团队 效能 AIGC 释产能

Mac电脑压缩解压工具WinZip激活最新版

胖墩儿不胖y

Mac软件 压缩工具 解压缩软件

率先支持Kuasar!iSulad Sandbox API 简化调用链,沙箱管理能力增强

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级

汀丶人工智能

人工智能 自然语言处理 深度学习 大语言模型 chatglm3

释产能,论研效提升之路

之家技术

效率 团队 资源 效能 释产能

编程不是写代码,揭秘3种编程新范式:文本、图形和自然语言

代码生成器研究

编程 低代码 代码 编程范式 ChatGPT

即时通讯技术文集(第23期):IM安全相关文章(Part12) [共15篇]

JackJiang

网络编程 即时通讯 IM

爆款元服务!教你如何设计高使用率卡片

HarmonyOS开发者

HarmonyOS

Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能

汀丶人工智能

人工智能 Milvus 向量数据库 检索系统

深入跨域 - 从初识到入门 | 京东物流技术团队

京东科技开发者

前端 跨域 WMS仓库管理 企业号11月PK榜

“枫”景独美时,在华为天气发现观赏指南

最新动态

Linux常用命令用法及实现方式

小齐写代码

G口服务器有多快

Geek_f19a80

服务器

最强大模型训练芯片H200发布!141G大内存,AI推理最高提升90%,还兼容H100

Openlab_cosmoplat

LinkedIn的Gradle与Play框架集成实践_Web框架_丛一_InfoQ精选文章