限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

Maven、Ant、Rake:JRuby 1.5 加强配置管理

  • 2010-04-14
  • 本文字数:1496 字

    阅读完需:约 5 分钟

随着即将到来的 JRuby 1.5 版本(预计将在四月底发布),JRuby 项目正通过集成 Maven、Ant 与 Rake 不断改善 Java 与 Ruby 的互操作性。Ruby 开发者将能更多地利用 Java 平台的优势,而 Java 开发者也将找到更多的理由在已有的项目中使用 Ruby 工具。

JRuby 1.5 中的一些主要的新特性是在配置管理方面,将 Ant 和 Maven 库全面集成进了它的工具集中。通过允许将 Java 库安装为 Gem,JRuby 的 Maven 集成将为 JRuby 平台带来成千上万的新 Gem

感谢来自 Sonatype 的 Tamas Cservenak,我们现在做到了曾经认为是不可实现的事情:让 RubyGems 完整集成世界上所有的 Maven 构件! 在 JRuby 1.5 中,你将能够安装或依赖任意发布到公共 Maven 库中的 Java 库。简而言之,你又多了 60000 多个唾手可得的库。

Maven 集成是通过一个针对 JRuby 的长得像标准 RubyGems 库的 Maven 服务器来实现的。JRuby 用户会看到像普通 Ruby 库一样方便地使 用 Java 库带来的好处。在那些评估新技术时强调库支持的企业里,这也能让 JRuby 成为更有用的选择。

JRuby 1.5 还能帮助 Java 开发者改善他们自己的依赖管理,这要归功于与 Apache Ant 构建工具的集成。在最近的一篇博客中,Charles Nutter 演示了 Java 开发者如何用 Ruby 的 Rake 构建工具和 Apache Ivy 依赖管理器(一般应该通过 Ant 来调用的工具)来管理依赖。Rake 能下载并安装 Ivn,用它从远程库中获取 jar 文件和其他资源(包括其依赖), 让它们能用于构建。因为 JRuby 1.5 能够在 Rake 中调用 Ant 任务,这才让一切成为可能。

那些想要减少 Ant 依赖的 Java 开发者无需从头重写构建文件。除了能在 Rake 中调用 Ant 任务,JRuby 的 Rake/Ant 集成还允许从 Ant 里调用 Rake,将 Rake 任务导入为 Ant 目标。Tom Enebo写到

你可以先为几个新功能点写 Rakefile,并让团队成员试用一下,看看他们的反应,如果他们喜欢的话……[你就可以] 更多地依赖 Rake 的能力,将 Rake 任务注入进 Ant 依赖图中。你的小组依旧使用 Ant 作为主要构建工具,但你正把更多的构建任务代理到 Rake 上。

Rake/Ant 集成允许开发者利用两者的优势:

我觉得人们把 Ant 当成这样一种工具——句法不太优雅,但能可靠地完成任务,而且在缺乏命令式编程结构这一点上也让人有些遗憾。这似乎是有意而为,但却让很多程序员不怎么高兴。 Rake,恰好相反,拥有更好的语法,还可以使用各种 Ruby 语言允许的结构……另一方面,如果你需要执行 Java 世界里的常用任务,那么 Rake 就缺少很多 Ant 包含的标准化跨平台任务了。你可以通过很多讨厌的 shell 命令来解决问题,一切看上去都很棒,呃,直到你尝试在 _Windows_ 上进行构建……

由于 Rake 提供了一套完整的命令式编程环境,有些在 Ant 里实现起来很繁琐(或者不写自定义 Ant 任务几乎无法实现)的事情在 Rake 中就变得轻而易举了。 你可以用 Rake 来实现那些部分,其他的东西依旧使用 Ant。

他补充到,“即使你完全使用 Rake,你也需要知道像 NetBeans 这样的软件希望有一个 build.xml,这样它才能和你的项目相结合。”

在 Rake/Ant 集成让 Java 开发者的生活更轻松的同时,它也能为 JRuby 开发者带来好处。在 Rake 中可以调用 Ant,在 Rake 里,Ant 任务能被当作 Rake 任务进行调用——你只需简单地导入一个 Ant 构建文件,就能让其中的任务被视为 Rake 任务了。这使 Rake 能与现有的 Ant 构建文件以及基于这些文件的系统结合起来。

“理想情况下我们能涵盖所有可能的集成场景,最终模糊 Rake 与 Ant 的界线,”Nutter 写到。“我们还会将 JRuby 的构建迁移到 Rake 上,大家都为此感到高兴。”

查看英文原文: Maven, Ant, Rake: JRuby 1.5 Enhances Configuration Management

2010-04-14 10:572100
用户头像

发布了 135 篇内容, 共 64.3 次阅读, 收获喜欢 43 次。

关注

评论

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

ceph-csi源码分析(3)-rbd driver-服务入口分析

良凯尔

Kubernetes 源码分析 Ceph CSI

一文带你了解华为云GaussDB的五大黑科技

华为云开发者联盟

数据库 华为云 GaussDB(for Influx) 时间线 tpmC

中国区块链产业全景图

CECBC

技术应用

GitHub开源的中国亲戚关系计算器

不脱发的程序猿

GitHub 开源 程序员 4月日更 中国亲戚关系

CloudQuery v1.3.7版本更新,新增「导出限制」

BinTools图尔兹

数据库 sql 数据安全 数据库管理

NumPy之:数据类型对象dtype

程序那些事

Python 数据分析 Numpy 程序那些事

流水线成功涨薪到年薪30W 只有努力才能成功

学Java关注我

Java 架构 程序人生 编程语言

Python3 print变量打印输出功能后面隐含的几个知识点

老猿Python

Python print str repr

量化策略倍投系统搭建,马丁策略交易

耗时5小时,用低代码搭了2套应用,我才明白它为什么能火了

优秀

低代码 低代码开发 低代码开发平台 低代码平台

软件 IT 专业大学生职业方向情况调查

李孟聊AI

大学生日常 IT 大学生

让宝妈宝爸告别安全顾虑,区块链构建母婴行业新生态

CECBC

母婴

ceph-csi源码分析(4)-rbd driver-controllerserver分析

良凯尔

Kubernetes 源码分析 Ceph CSI

Kubernetes 上如何控制容器的启动顺序?

张晓辉

Kubernetes istio

LeetCode题解:191. 位1的个数,位运算,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

uni-app rtm插件集成指南及常见问题--iOS

anyRTC开发者

uni-app ios 音视频 WebRTC sdk

人类视觉神经科学助力音视频产业革命-弱网下的极限实时通信

张音乐

音视频 笔记 弱网下的极限实时视频通信

Faiss源码剖析:类结构分析

华为云开发者联盟

机器学习 KNN Faiss 类结构 Quantizer

抵制羊毛党,图计算“加持”互联网电商风控

华为云开发者联盟

风控 图计算 互联网电商 羊毛党

yarn的applicationMaster介绍

五分钟学大数据

YARN

SpringSecurity+JWT认证流程解析

学Java关注我

Java 编程 程序人生 计算机 架构】

迪安精选:那些好用的浏览器扩展

迪安

浏览器 插件 扩展

飞桨中国行落地合肥,与当地企业共话产业智能化升级

百度大脑

智能化 飞桨中国行

群英荟萃 | UINO优锘科技ThingJS平台亮相华为开发者大会

ThingJS数字孪生引擎

物联网 3D可视化 数字孪生

让电影票房飞一会儿,五一换个姿势重温经典

华为云开发者联盟

音视频 电影修复 视频超分 媒体处理 混合失真

Boss直聘转发超100W次Java面试突击手册 火遍全网

比伯

Java 编程 程序员 架构 计算机

图的学习总结

Nick

数据结构 数据结构与算法

vue+webpack+vue-cli

Vue js 打包 webpack vuecli

浙江宁波市区块链研究机构发布首个全国性公证联盟运营链

CECBC

区块链

云图说|ModelArts Pro,为企业级AI应用打造的专业开发套件

华为云开发者联盟

AI 企业应用 ModelArts Pro 开发套件

阿里码农肝了2晚,整理的Java语法总结,网友:考试复习全靠它了

飞飞JAva

Maven、Ant、Rake:JRuby 1.5加强配置管理_Java_Paul Blair_InfoQ精选文章