|  | 级别: 初级 Charles Chan (charlesc@ibiblio.org), 高级软件开发人员, Finetix LLC
2003 年 5 月 01 日 Maven 的许多构建能力来自 Jelly,Jelly 是一种基于 Java 技术和 XML 的脚本编制和处理引擎。Jelly 的特点是有许多基于 JSTL (JSP 标准标记库,JSP Standard Tag Library)、Ant、Velocity 及其它众多工具的可执行标记。Jelly 还支持 Jexl(Java 表达式语言,Java Expression Language),Jexl 是 JSTL 表达式语言的扩展版本。
返回至文章。
让我们查看一个简单的 maven.xml 文件,然后讨论其 Jelly 功能。
清单 1. 用 Jelly 编写的样本构建脚本
<?xml version="1.0" encoding="ISO-8859-1"?>
<project xmlns:j="jelly:core">
<goal name="Echo Dependencies">
<j:forEach var="dep" items="${pom.dependencies}">
<echo>${pom.getDependencyPath(dep.getId())}</echo>
</j:forEach>
</goal>
</project>
|
上面的代码演示了在 Jelly 脚本中 XML 名称空间如何表示正确的标记库。代码告诉 Jelly:
j 名称空间中的所有标记都引用
jelly:core 库中的标记。还需要注意的是,您可以使用表达式
${pom.dependencies} 来访问 POM 的相关性列表。如果您熟悉 JSTL 或 Struts,您可能会猜到该表达式实际是指
pom.getDependencies() 。Jelly 不但让您通过使用上面的表达式来获取 bean 的属性,而且您甚至还可以象
${pom.getDependencyPath()} 中那样直接调用 Java 方法。
pom 对象是 POM 的运行时实例,即
Project 类。
forEach 标记提供了简单的循环机制,每次通过循环都执行其标记体。
将来,Maven 可能会提供用于编写插件的纯 Java API,但它仍然会完全支持 Jelly 机制。
注:Jelly 提供的功能比这里展示的要多得多。要获取更多有关 Jelly 的信息,请访问 Jelly 网站(请参阅
参考资料)。
返回文章。
关于作者  | |  | Charles Chan 是 Finetix LLC 的一名顾问。Charles 的兴趣包括分布式系统、高性能计算、国际化和软件设计模式。在业余时间,他为开放源码社区做志愿工作。可以通过
charlesc@ibiblio.org与 Charles 联系。
|
对本文的评价
|  | IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。 |