BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

LinkedIn的Gradle与Play框架集成实践

| 作者 丛一 关注 2 他的粉丝 发布于 2015年4月22日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

用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的版本。multiproject示例则包含了一个标准的Gradle Multiproject构建。

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


感谢徐川对本文的审校。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

集成进展如何? by deng wesley

请问现在这个项目进展如何?gradle和play framework的集成?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT