Hudson 2.0.0 发布了!该版本使用了与 OSGi/Semantic 一致的版本编号。在此之前,Hudson(Jenkins 至今都是)遵循 JDK 的版本编号规则(具体而言,第一位版本号永远是 1,每次发布时第二位数字递增)。
Hudson 将来的版本编号将参照邮件列表中讨论的规则而确定,这一方法同样用于测试OSGi 整合项目之中。
与Jenkins 分开后,尽管Hudson 已经发布了多个新版本(2 月10 日发布的1.396 以及3 月14 日的1.398),但是这一新版本编号却意味着向前看的一次重要的重置。其重大改变之一是对Hudson 插件的基础设施的更改——允许通过 JSR 330 的依赖注入来配置插件。
Smoothie (或“Hudson-inject”)是 Sisu 上的一款适配器。这是一款建立在 JSR-330 之上的容器,它使得@hudson.Extension
标注可被更加通用的@Named
标注和@Inject
标注所替换。此外,它还支持将组件定义成@Singleton
,既保证了单例又避免了静态查找。再者,你还能创建非单例组件,在服务需要它时即可注入一个实例。
OSGi 兼容性是通过 Sisu 的辅助实现的,Sisu 是 Google Guice 的扩展(此前InfoQ 报道过),而且它依赖OSGi 支持依赖注入。需要注意的是,没有Sisu, Guice 自身既可用在 OSGi 中;其 3.0 版本提供了开箱即用的标准的 OSGi 互操作性。而 Sisu 所做的是,它不需要 OSGi 代码就可将 Guice 注入与 OSGi 服务绑定在一起,这使得 Guice 组件既可在 OSGi 容器内运行,也可无缝地运行在 OSGi 容器之外。 Nexus 和 Maven 3 等使用的就是 Sisu 容器。
JSR330 兼容性也出现在 Jenkins 的路线图中;而且 Jenkins 中已经融合了其中的一部分规范。这意味着只要你想,就应该能在Jenkins 中使用Smoothie。
最后,Hudson 鼓励通过 oss.sonatype.org 将 Hudson 插件发布到 Maven Central 中,同时提供文档介绍如何成功做到这一点。将来,Hudson 插件的开发重点是 JSR330 模型,不过为了向后兼容(和 Jenkins 的互操作性),对非 JSR330 模型的支持还将持续一段时间。对此项目感兴趣的人可以捉虫并报告缺陷,这有助于开发任务的优先级排序。
评论