扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
大多数 Web 开发人员向来只是使用已有的框架(例如 Shale、Struts 或 Spring)来开发他们的 Web 应用程序,而没有做别的事情。当然这没有什么错,但是如果想理解一种框架以及它所涉及的技术,那么只能对框架本身做深入的研究。
对于 Shale(当然也包括 Struts),通过查看框架的内部,您可以学到大量关于 servlet 和 Web 开发的知识。如果想在自己的项目中使用一些 Shale 依赖项,这样做还可以获得难以置信的帮助。如果您对通过 Java 应用程序进行日志管理感兴趣,那么通过 Shale 来熟悉 Apache Logging 项目比阅读任何文章都要有效得多。对于 Jakarta Commons BeanUtils、Chain 或 Digester 项目也是一样。这些都是很好的工具,对于开发人员很有用,所以花几个星期或几个月的时间探索一下 Shale 对于这些领域是一个很好的学习经历。
由于本文是对 Shale 进行深入探讨的系列中的第一期,因此如果我不对几个对于 Shale 项目入门来说至关重要的方面进行讨论的话,就是不负责任了。
亲密接触源代码
不幸的是,关于 Shale 中涉及的开发过程的文档并不多,所以如果您想直接使用 Shale 源代码的话,需要用点儿技巧。一般来说,我这里给出的关于下载 Shale 并将它作为框架使用的说明也适用于下载 Shale 的源代码。每晚构建包含 Shale 的所有源代码,并且代码的每个目录中都有一个 build.xml 文件。
需要将下载的 Shale 的根目录下的 build.properties.sample 文件复制到一个名为 build.properties 的文件中(去掉原始文件名尾部的 “.sample”)。清单 2 展示了这个文件的一个示例,为了简洁起见,这里省略了其中一些注释:
清单 2. 示例 Shale 构建文件
# This file contains example property settings that you would use to customize # Root directory into which you have unpacked the Shale Framework release. # Fully qualified pathname of the directory into which you have unpacked findbugs.outputFile=${root.dir}/find-bugs.html # The absolute or relative pathname of the Apache Struts spring.home=${lib.dir}/springframework |
为了与您的系统相匹配,需要更改这个构建文件中大部分的路径。默认情况下,${basedir} 指向运行 Ant 时所在的目录,因此如果是从下载的 Shale 的根目录下运行 Ant,那么就刚好不用改路径了。但是对于其他路径,应该改为适当的与系统相匹配的路径。例如,如果您的 JSF 参考实现在 c:/java/jsf-1_1_02 中,那么使用 jsfri.dir 目录所在的路径。大多数默认路径都适合于使用 MyFaces(请参阅 “MyFaces 还是 JavaServer Faces”),但是当然也可以使用 Sun 的 JSF 实现,并对这些路径作相应的更改。另外还需要设置 Struts、Spring(这是可选的,对于核心 Shale 框架来说不必要)和 FindBugs 项目的路径。
Ant 登场
设置好这些文件的路径后,就可以在 Shale 的根目录中运行 Ant。但是,首先应该运行 ant download-dependencies。您当然也已经注意到,Shale 有很多 依赖项,而通过使用 Ant 自动下载这些依赖项可以为您节省很多时间,也令您轻松不少。Ant 脚本还负责设置路径,以便使 Shale 与那些依赖项连接起来。还应该运行 ant copy-jsf-ri 来处理一些特定于 JSF 的任务(具体细节不必关心,因为 Ant 会为您打点一切)。
在构建主 Shale 发行版之前,应该运行 ant clean 删除之前已有的构建后的代码。虽然这意味着整个构建时间会更长,但是可以确保所有代码将一致地构建。最后,运行 ant release,以便从头开始构建 Shale。当这个 Ant 脚本运行完成后(这要花一点儿时间),就可以得到一个完整的、从源代码构建的 Shale 发行版。
关于邮件列表的只言片语
开发源码项目几乎完全是通过电子邮件(再加上 Apache bug 跟踪数据库,在 参考资料 小节中有这方面的内容)来运作的。Shale 在这方面也是一样的,不过它仍然使用 Struts 的邮件列表。如果在使用 Shale 时有什么疑问,可以发送电子邮件到 user@struts.apache.org。但是当您开始开发真正的 Shale 内部组件时,应该将电子邮件发送到 dev@struts.apache.org。不管将电子邮件发送到哪里,都应该以 “[shale]” 开头,这样别人一下子就明白您是要问关于 Shale 的问题,而不是关于 Struts 的问题。预期在几个月后,当 Shale 开始成为独立的项目时,它也会有它自己的邮件列表。
这里稍微提醒一下,尤其是在发送电子邮件到开发列表的时候:做好自己的工作,问题要有的放矢。那些飘忽不定、模棱两可或缺乏思想的邮件很可能不会收到回复。如果您到处发送 “我想学习 Shale,请给我发送一些例子应用程序” 之类的邮件,甚至还可能得到粗鲁的回答。虽然这种提醒看上去有些傻,但事实就是这样。开发列表中总是充斥着这一类的问题,这些问题都是不受欢迎 的。通常,花点儿时间认真地斟酌您的问题,解释一下您使用的平台和软件的版本,并说明您已经试过了一些常用的步骤。这样一来,您的请求才会得到尊重并受到欢迎,也就更容易得到答案。开发人员的列表并不是令人生畏的,但最起码这样做显得您尊重别人。
结束语
这个关于 Shale 的系列中的第一期文章说明,Shale 并不适合每一个人。Shale 没有提供一个打包好的、有编制好的文档并经过良好测试的产品,也没有附带自动安装程序和优雅的管理界面,这些都是很多 Web 开发人员期待 Tapestry 时代能提供的东西。虽然在以后版本的框架中会体现这些东西(除了完全打包),但目前 Shale(从 2006 年初起)仍在开发过程中,并且 Shale 站点也基本上将它称为处于 “alpha” 状态的项目。Shale 中使用的很多组件是稳定和成熟的,但 Shale 本身仍然很年轻。如果您不能接受一些麻烦和困惑,那么可能会想过一年左右再开始使用它。
另一方面,如果您是一名对 Web 开发的前沿技术感兴趣的 Java 开发人员,那么真应该看看 Shale 项目。虽然安装 Shale 并使之工作要花费更多的精力,但是它完全有条件成为特别流行的 Web 开发框架。Shale 继承了 Struts,同时也提供了一些全新的东西,这本身就值得作一番调查。对于有兴趣成为开放源码项目中的一员的开发人员,Shale 也是值得投入精力的一个项目。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者