写点什么

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

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

关注

评论

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

阿里、字节大佬共创的Netty核心原理手册,必须是全网No.1

程序知音

Java Netty java架构 Java进阶 后端技术

二层交换机和三层交换机到底有啥区别?如何从二层切换到三层模式,结合思科、华为、瞻博三厂商!

wljslmz

6 月 优质更文活动

入职阿里?最少啃完这本500页Java并发多线程源码笔记

程序知音

Java 并发编程 多线程 高并发 后端技术

卡牌游戏系统开发web3链游技术

薇電13242772558

web3 链游

SpringBoot升级所踩过的坑(一)

技术小生

6 月 优质更文活动

LED广告牌企业的突破点在哪?

Dylan

技术 分辨率 LED LED显示屏 led显示屏厂家

文盘Rust -- tokio绑定cpu实践 | 京东云技术团队

京东科技开发者

rust cpu tokio 企业号 6 月 PK 榜

如何开发视频上传和播放功能时,既省钱又体验好?

北桥苏

php ffmpeg OSS HLS m3u8

踩坑:以为是Redis缓存没想到却是Spring事务!

做梦都在改BUG

Java redis spring 缓存 事务

Spring Security安全框架在Spring Boot框架中的使用

做梦都在改BUG

Java Spring Boot spring security 权限管理

公司大规模裁员的时间轴

HoneyMoose

二级等保堡垒机用哪个品牌好?理由是什么?

行云管家

网络安全 等保 堡垒机 等级保护

MySQL对derived table的优化处理与使用限制

GreatSQL

MySQL greatsql社区

轻量灵动: 革新轻量级服务开发 | 京东云技术团队

京东科技开发者

jdk8 GraalVM jdk17 企业号 6 月 PK 榜

【ChatGPT应用篇】助力Beauty代码的初体验 | 京东云技术团队

京东科技开发者

人工智能 ChatGPT 企业号 6 月 PK 榜

GreatSQL 8.0.32-24 今日发布

GreatSQL

MySQL greatsql greatsql社区 MySQL生态

大语言模型的创意能力到底几何?探索从GPT-2到GPT-4的演进

Baihai IDP

人工智能 自然语言处理 大模型 白海科技 企业号 6 月 PK 榜

5分钟在k8s上可视化搭建Kylin5

CloudEon开源

大数据 开源 云原生 kubernetes 运维 Apache Kylin

云管理用哪家云管平台厂商好?从哪些方面来看?

行云管家

云计算 云资源 云管理 云成本

MySQL Router高可用搭建

GreatSQL

MySQL 高可用 greatsql社区

从入门到精通,阿里内部手抄微服务架构笔记,看完感觉我又行了!

做梦都在改BUG

Java 架构 微服务 Spring Cloud spring cloud alibaba

NFTScan | 05.29~06.04 NFT 市场热点汇总

NFT Research

面渣逆袭必看!Java中高级面试指南,Github标星4.3k+!

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

记一次618军演压测TPS上不去排查及优化 | 京东云技术团队

京东科技开发者

JVM 压测 调优 压测分析 企业号 6 月 PK 榜

GitHub标星137k+,超全面Java知识点总结!从10K到40K全有了

做梦都在改BUG

Java

Maven Could not find artifact com.ruoyi:ruoyi-framework:pom:3.8.5 in public

Andy

🔥笔下生花,与时舒卷,InfoQ写作社区6月优质更文活动来啦!

InfoQ写作社区官方

热门活动 6 月 优质更文活动

自动化回归测试平台 AREX 前端架构演变史 —— Tabs 动态组件设计

AREX 中文社区

Vue 前端 软件测试

GitHub 爆火的「算法刷题宝典」,电子版终于出来了

做梦都在改BUG

Java 数据结构 算法 LeetCode

牛客网最新版Java面试题大全带答案 1400多题(限时分享)

架构师之道

Java 面试

2023秋招Java 面试必刷的1200 道Java大厂面试真题(含答案解析)

采菊东篱下

java面试

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