写点什么

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

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

关注

评论

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

为什么观测云选择持续输出最佳实践

可观测技术

可观测性

深入探讨:Kubernetes 与低代码的原理及应用实战

EquatorCoco

Kubernetes 容器 低代码

一文讲清楚精益数据方法论在数据治理中的应用

神州数码

精益数据 精益数据方法论

使用 Postman 变量的入门指南

Liam

程序员 后端 变量 Postman API

Web3.0区块链技术开发方案丨NFT项目开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

探索API主导的最佳AI创业项目商业模式

幂简集成

AI 商业模式 API

DevOps全面综述:从概念到实践

EquatorCoco

DevOps 运维

探索区块链挖矿App开发:技术、挑战与未来展望

dappweb

Flink⼤状态作业调优实践指南:Datastream 作业篇

Apache Flink

大数据 flink Datastream

工厂模式——工厂方法模式+注册表

快乐非自愿限量之名

工厂模式

【深度好文】到底什么是质量意识?如何衡量,如何提升?

快乐非自愿限量之名

质量 意识

Python高频面试题解析公开课

霍格沃兹测试开发学社

Naarak Studio DirEqual for Mac(文件夹比较工具)v5.8.3版

Mac相关知识分享

Mac 办公软件 Mac软件

低代码平台:国内十大低代码开发平台排名

优秀

低代码 低代码平台

Native Instruments Kontakt 7 for Mac(苹果专业音频采样器)v7.10.5版

Mac相关知识分享

Mac Mac软件 音频处理

软件测试学习笔记丨Flask操作数据库一对多操作

测试人

软件测试

海外云手机对比真实手机有什么特点?

Ogcloud

云手机 海外云手机 云手机海外版 海外云手机推荐

文旅营销的艺术与技术,在鲸鸿动能合而为一

脑极体

AI

Web3.0区块链技术开发方案丨中心化与去中心化交易所开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

豆瓣评分9.6!有趣又实用的典范,Python小白应该人手一份!

我再BUG界嘎嘎乱杀

Python 编程 入门 开发语言 零基础

作为CTO,你还能忍受公司内部监控系统的无限增殖吗?

可观测技术

监控

Dynatrace仅是APM,你需要的是全方位的监控观测平台

可观测技术

监控

Microsoft Remote Desktop for Mac(微软远程连接软件) v10.9.7版

Mac相关知识分享

Mac Mac软件 微软远程

李尔将收购西班牙自动化和智能公司WIP Industrial Automation

财见

软件测试学习笔记丨Flask操作数据库-数据增删改查

测试人

软件测试

你真的完全理解 Logistic 回归算法了吗

不在线第一只蜗牛

人工智能 数据挖掘 逻辑回归

EdgeView 4 for Mac(快速图像查看器) v4.7.4版

Mac相关知识分享

macos Mac 办公软件 Mac软件

Native SQLite Manager for Mac(极简SQLite数据库管理器) v1.28.0版

Mac相关知识分享

数据库 Mac Mac软件

云手机海外版可以用来运营TikTok吗?

Ogcloud

云手机 海外云手机 tiktok云手机 tiktok运营 云手机推荐

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