50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:523049
用户头像

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

关注

评论

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

字节跳动深夜公告,跨境电商迎来新机遇

Wolink

跨境贸易 中美贸易 Tiktok shop 沃链Wolink 达人营销

YashanDB数据库实时数据流处理的实用指南

数据库砖家

YashanDB数据库事务日志机制与优化策略分析

数据库砖家

YashanDB数据库适用于高负载环境的性能调优指南

数据库砖家

BTrace

数新网络官方账号

GitHub btrace

YashanDB数据库升级流程及版本兼容性注意点

数据库砖家

YashanDB数据库实现数据共享的最佳实践方法

数据库砖家

商汤大装置AI Agent Infra实践,加速智能时代创新效能

Lily

区块链APP的开发框架

北京木奇科技有限公司

dapp开发 区块链开发 软件外包公司

区块链DAPP的开发框架

北京木奇科技有限公司

dapp开发 区块链开发 软件外包公司

阿里团队发布智能体 iFlow CLI,性能超Claude Code,个人用户永久免费使用

新消费日报

仁合医疗投资是真的吗?——进博会亮点,创新成果获赞誉

科技汇

掌握YashanDB备份策略,保障企业数据安全

数据库砖家

YashanDB升级迁移过程中减少风险和提高效率

数据库砖家

从混沌到秩序:Java共享内存模型如何通过显式约束驯服并发?

poemyang

并发编程 Java并发编程 竞态条件

助力中小企业上云,伊克罗德信息荣获Amazon SMB Competency能力认证!

伊克罗德信息科技

YashanDB数据库实施项目的全流程管理经验

数据库砖家

鸿蒙项目开发——Window和Display获取屏幕信息

高心星

鸿蒙 window HarmonyOS5.1 display 屏幕管理

北京住欣家园:“人工智能+”赋能基层减负增效 绘就治理现代化新图景

科技热闻

YashanDB数据库实时数据处理的核心优势分析

数据库砖家

闲鱼商品详情API技术文档

tbapi

闲鱼API 闲鱼商品数据采集 闲鱼商品详情API 闲鱼商品数据分析

融媒体平台如何借力海外舆情监测提升国际传播影响力?

沃观Wovision

舆情监控 舆情监测 沃观Wovision 舆情监测系统 海外舆情监测

阿里将发布多模态模型 Qwen3-Omni,主打多语言与复杂推理;DeepvBrowser 上线 AI 语音浏览器丨日报

声网

海外APP上线Google Play的过程

北京木奇科技有限公司

APP开发 软件外包公司 海外APP

闲鱼API系列:如何通过商品列表接口构建智能比价工具

tbapi

闲鱼API 闲鱼商品列表接口 闲鱼数据采集 闲鱼商品列表api 闲鱼数据详情

CST软件机箱屏蔽效能仿真案例

思茂信息

cst CST软件 CST Studio Suite

掌握YashanDB数据库的查询优化技术,提高查询效率

数据库砖家

做到高效管理:YashanDB数据库的实用方法

数据库砖家

面向中大型企业,Moka Eva 优化 AI招聘管理系统流程

科技汇

YashanDB数据库事务处理技术全面解析

数据库砖家

YashanDB全链路监控的技术思路与实践

数据库砖家

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