写点什么

Maven 将要投入 Guice 的怀抱

  • 2010-02-11
  • 本文字数:1241 字

    阅读完需:约 4 分钟

Sonatype 是一家专业的服务公司,资助了很多 Maven 开发者的开发工作。近日 Sonatype 计划将 Maven 迁移到 Guice Dependency Injection(DI)容器上的插件层以替代 Plexus DI 容器。显然,使用 Guice 并不是一个草率的决定。Plexus 是个过时的 DI 容器,用于 Maven 的所用版本中。 Jason van Zyl (Maven 项目与 Sonatype 创建者)说最初在构想 Maven 1.0 时之所以使用 Plexus 是因为它是当时仅有的几个选择之一;在那个时候,Avalon(已经废弃的 Apache 项目)则是另一个知名的 DI 解决方案。

Maven 是个构建工具,采取约定优于配置的启发式手段进行应用的构建。虽然功能非常强大,但还是有很多人抱怨 Maven 不太灵活。要想通过 Maven 完成某个任务,用户需要对已有的插件进行配置(这非常简单)或是编写自己的插件,但很多开发者都不愿意写插件。插件都会用到 Maven 运行时中的 Plexus。插件开发者需要掌握 Plexus 才能定制 Maven 插件或是更好地理解现有的插件——这非常不爽,因为 Plexus 的文档非常差劲。除了差劲的文档外,van Zyl 还提到了用 Guice 替换掉 Plexus 的诸多原因。他呼吁大家不要再向 Plexus 项目进行提交了,因为 Maven 项目不打算自己构建并支持 DI 容器,而是向开发者及构建者提供构建工具与基础设施。

同时,另一个围绕着 Maven 进行的项目(叫做 Polyglot Maven )承诺了很多增强以简化 Maven 使用与插件的编写,这包括支持用其他语言(如 Groovy 或是 Scala 等)编写 Maven pom 文件。

Guice 是由 Google(其中包括 Bob Lee )开发的一个流行的 DI 容器。凭借 Guice,我们能够通过编程的方式将实现类绑定到接口上,然后通过 Guice @Inject 注解将生成的实例注入到构造方法、方法或是属性中。

最近,Guice 增加了对 JSR 330 的支持。JSR 330 定义了一套可移植又好用的 DI 功能子集,将被不同的 DI 容器实现。现在就有很多 DI 容器已经实现了该规范,如 Guice 和 SpringSource 的 Spring Framework 。Bob Lee 和 Jason van Zyl 都是 JSR 330 专家组的成员。Maven 的 Guice 支持将通过 JSR 330 注解实现,这样就具备了可移植性。为了确保能从 Plexus 平滑迁移到 Guice 上,Maven 将使用 Guice 构建一个桥接层。在经过了多方比较后最终确定 Maven 是唯一一个能够轻松从 Plexus 进行迁移的 DI 容器,这样最后的决定也就不言而喻了。

Guice 还提供了其他一些优秀的特性:支持 peaberry( peaberry 是构建在 Guice 上的一个扩展模块,可以对动态 OSGi 服务进行解析和注入)、类型安全及定义良好的错误消息等。虽说某些特性并非 Guice 所独有,但 Guice 的的确确为我们提供了一个选择。Maven 团队现在不得不支持 Guice 的一个修补版本以满足其需求。van Zyl 说大部分内容正在实现当中,而有些则已经实现了。尚未实现的要么是不太重要的,要么仍处在测试和验证阶段。

其他一些项目(如知名的 Nexus server、Tycho 等等)也已经准备开始集成 Guice 了,在 Sonatype 最终完成 Maven 的重构后,这些集成也会延伸至 Sonatype 的其他项目中。

查看英文原文: Maven to be Built on Guice

2010-02-11 19:462664
用户头像

发布了 88 篇内容, 共 267.0 次阅读, 收获喜欢 8 次。

关注

评论

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

美团餐饮SaaS基于StarRocks构建商家数据中台的探索

StarRocks

数据分析 零售

云成本优化方案-采购云管平台!

行云管家

云计算 云资源 云成本、

中美顶级AI首次对话 送给人类的忠告引发关注

硬科技星球

破解加密的LastPass数据库

神锁离线版

数据安全 密码 密码管理器 Lastpass 密码安全

隐私集合求交(PSI)协议研究综述

京东科技开发者

安全 密码学 安全多方计算 隐私集合求交 不经意传输

技术分享| anyRTC复盘一起看球场景

anyRTC开发者

CDN RTC 实时音视频 直播连麦 AI降噪

贯穿汽车用户全生命周期,火山引擎数智平台能帮车企做这些事!

字节跳动数据平台

大数据 数据产品 12 月 PK 榜

【年度评选】让我们为即将过去的 2022 划上圆满的句号

InfoQ写作社区官方

热门活动

海量请求下的接口并发解决方案

Java全栈架构师

Java 数据库 面试 后端 架构师

GitHub标星120K+!最新23版Java岗面试攻略,涵盖28个技术栈!

程序知音

Java java面试 java编程 后端技术 Java面试八股文

AI技术实践 | 人脸核身在未成年人保护领域的实践应用

牵着蜗牛去散步

人工智能 腾讯云 腾讯 人脸识别 未成年保护

自学web前端开发能找到好工作吗?

小谷哥

跨越速运运单分析系统入选2022中国数据智能最佳实践案例

StarRocks

数据分析 物流

华为应用市场公布2022年度榜单 原子化服务、车载应用首次上榜

最新动态

选择大数据培训学习技术之前有哪些准备

小谷哥

火山引擎工具技术分享:用AI完成数据挖掘,零门槛完成SQL撰写

字节跳动数据平台

大数据 BI BI 分析工具 12 月 PK 榜

java培训学习后找不到工作的原因有哪些

小谷哥

YonBuilder开发之后端函数

YonBuilder低代码开发平台

后端 数据 开发 扩展 软件研发

如何轻松做数据治理?开源技术栈告诉你答案

NebulaGraph

数据治理 图数据库 全链路数据血缘 数据血缘

分布式系统关键路径延迟分析实践

百度Geek说

12 月 PK 榜 延时分析 关键路径 大型分布式系统延时优化

大数据培训机构怎么选择

小谷哥

融云 x OHLA:「社交+游戏」双轮驱动,逐鹿中东陌生人社交

融云 RongCloud

社交 融云

某车企用户数据泄露,新能源汽车信息安全问题不容忽视

行云管家

信息安全 企业 堡垒机

论文复现丨基于ModelArts实现Text2SQL

华为云开发者联盟

人工智能 华为云 12 月 PK 榜

玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制

OpenHarmony开发者

OpenHarmony

【干货分享】PCB 板变形原因!不看不知道

华秋PCB

生产 工艺 PCB PCB设计

InfoQ 写作社区 2022 年度优质企业号评选正式开启!

InfoQ写作社区官方

热门活动

端到端流程打通企业经脉

元年技术洞察

数字化转型 流程 趋势研究 PaaS平台 方舟平台

web前端培训班怎么学习?

小谷哥

重磅 | 九科信息受邀参加2022中国互联网大会“数字政府论坛”

九科Ninetech

MySQL进阶:Innodb的RR到底有没有解决幻读?

程序员小毕

MySQL 数据库 程序员 后端 java面试

Maven将要投入Guice的怀抱_Java_Josh Long_InfoQ精选文章