《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

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

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

关注

评论

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

为什么要了解复杂科学?

石云升

8月日更

Cron调度任务入门

devpoint

crontab 8月日更

Vue进阶(七十):了解 webpack 的 hash、chunkhash、contenthash

No Silver Bullet

Vue 8月日更

Go语言,深入了解 select 实现原理

微客鸟窝

Go 语言 8月日更

七月速递:人脸特征值同步私有化部署包发布、EdgeBoard车辆分析软硬一体方案助力交通管理智能化

百度大脑

人工智能 EdgeBoard 软硬一体

关于开发视图

编程三昧

8月日更 开发视图

阿里P8整理的《百亿级并发系统设计》实战教程,实在是太香了

Java~~~

Java 架构 面试 多线程 高并发

学生管理系统架构设计

晓波

架构实战营

Vue进阶(七十一):webpack 插件实现自动抽取 css 主题色样式一键切换

No Silver Bullet

Vue 8月日更 主题色

02. 到底什么是人工智能

Databri_AI

人工智能

四面字节跳动Java研发岗,最终拿下Offer,只有努力,方能成功

Java~~~

Java 架构 面试 微服务 架构师

【架构实战营作业】模块一:微信业务架构图&学生管理系统

聆息

初学架构师养成の微信业务架构分析&学生管理系统架构

Yina🌝很浪🌊

架构

架构设计系列一 架构方法论的入门

nydia

架构学习

架构实战之微信业务架构|学生管理系统

Nico

架构实战营

你最想了解的红队实战攻防技术,来了

网络安全学海

黑客 网络安全 信息安全 WEB安全 安全漏洞

架构实战营模块一作业-初识架构

娜酱

#架构实战营

游戏开发者的通关之旅,华为AGC for Games带来了什么?

脑极体

云行、数治、慧用 打造直抵基层的数字化高速公路

云计算

太厉害了,终于有人把TCP-IP协议整合成864页学习笔记了

Java~~~

Java 架构 面试 TCP 网络

大专的我狂刷29天“阿里内部面试笔记”最终直接斩获十七个Offer

Java~~~

Java 架构 面试 JVM 多线程

微信业务架构和学生管理系统架构设计

王家辉

强大的OCR技术+多元的用户场景 口碑型App白描的开发之路

百度大脑

人工智能 OCR 视障

数字资产多链钱包搭建,区块链多币种钱包

13530558032

吃透这份Github点赞120k的Spring全家桶笔记Offer拿到手软

Java~~~

Java spring 架构 面试 Spring Cloud

学习-1

4anonymous

让 KAS 给 GitOps 插上腾飞的翅膀

极狐GitLab

Kubernetes 极狐GitLabs

现货量化策略系统开发,量化软件开发

13530558032

美团年货-2020年(记录)

春秋易简

Go- 字符串、切片和数组的使用

HelloBug

数组 字符串 Go 语言 切片

读书笔记 -《数据密集型应用系统设计》-索引

KayTin

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