让我们查看一个简单的 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 联系。