最近公司想将产品方向转向Liferay,做了两个星期的Liferay研究,写点经验和成果和大家分享下。
一,认识
学习一个新的东西,往往都不知如何入手,除非这个东西像橘子一样,扒开皮就知道是可以吃的。Liferay确实对开发者来说还是算友好的!从6.0开始提供可eclipse可视化的插件之后就更加的友好,开发一个portlet或者一个hook都只需点点鼠标即可完成,这在官方wiki里面可以找到视频教程,本文提供的是一个常用的开发技术spring+hibernate的演示实例。所使用的都是目前最新的版本。所以新手想学习,可以借鉴下。
二,准备环境
Liferay的开发需要准备几个东西,第一是运行环境,第二是开发sdk,第三是辅助eclipse的插件。
下载地址:http://sourceforge.net/projects/lportal/files/
最近Liferay的更新速度比较快,从6开始之后陆续几天就会有一个新的0.X版本出来。所以你可以选择一个最新版本下载。
liferay的下载包现在都是与server捆绑一起的,所以根据你的开发环境选择不同的server版本。本文默认选择tomcat-bundles版本,
插件安装:(不要问我不会安装)
- Eclipse Galileo SR2 (3.5.2) http://releases.liferay.com/tools/ide/eclipse/galileo/stable/
- Eclipse Helios (3.6.0) http://releases.liferay.com/tools/ide/eclipse/helios/stable/
下载完成后解压各自的zip,得到sdk目录和运行环境目录,因为默认两个目录并没有约定是如何放的,所以你要修改一下sdk目录下build.properties文件中运行环境目录,此处使用tomcat,所以修改大约76行修改为类似下的目录地址:
app.server.dir=D:/liferay/liferay-portal-6.0.3/tomcat-6.0.26
此时运行环境ok,sdk配置完成,再来看看eclipse plugin,安装完成后进入preferences中Liferay选项设置sdk所在目录,如下图设置:
正确安装插件之后,在eclipse的new选项中将出现Liferay选项,如图:
到此开发环境配置完毕!
三,开始第一个演示
首先新建一个runtime server,打开eclipse的server view,new一个Liferay runtime server,用过的都应该知道,和建立tomcat运行server没啥差别的!
再使用上述安装的插件new一个Liferay Plugin project,取个名字:spring-hibernate-portlet-liferay6以表达本demo含义。
一个完整的demo项目结构已经创建,这里提示:新建的项目并不会创建者你正在使用的eclipse workspace下面,而是在liferay sdk的portlet目录下,稍后解释。先看看demo的目录结构:
看到这个项目的图标,大家肯定觉得熟悉,其实建立的就是一个动态web项目,打开项目的Project Facets也可以看到,项目之处了动态网站的特性外还加了一个Liferay Porelt的Facet。其中多出的文件就是WEB-INF下的tld目录和处了web.xml外的其他文件。上图applicationContext.xml是自己手工加的spring的集成文件,并非插件自动创建。
我们需要关心的文件只有两个liferay-porelt.xml和portlet.xml文件。前者是liferay的portlet实现被指配置文件,后者是JSR-168-268的标准文件,使用其他portal产品也是一样少不了portlet.xml。
liferay-porelt.xml是Liferay的配置文件,主要配置portlet的资源,如portlet的图片,css/js等资源;
portlet.xml则主要配置portlet的核心信息,如portlet的国际化资源文件,请求处理实现类。
默认创建之后会将建一个Hello World的Portlet。
下面再来看看如何在此基础建立一个spring+hibernate的portlet。
四,讲解spring+hibenrte的portlet
spring是一个大家熟知的很友好的框架,当然也支持portlet,新版的3.0.X的spring的mvc也是很好用。
首先准备下所需要的包,因为包多,给出列表大家到spring下载包中自己去找:
将找的所有包丢到WEB-INF/lib下:
再使用插件新建一个Porelt,这是不是选择Plugin project,而是选择Liferay Portlet,其中会让你选择所在项目。选择我们刚才建立的项目。建立完成后,我们打开liferay-portlet.xml和portlet.xml文件可以看到配置中会自动新加一组portlet配置。本文只是说明这个开发过程。所以代码是从
http://books.dzone.com/articles/hello-world-portlet-using-Spring-3-portlet-MVC 这个文章中拷贝过来,有关代码详细的解释,大家可以参考此文地址。其中此文所使用代码下载地址:
http://code.google.com/p/portletsinaction/downloads/list
上面提到为何项目建立之后会到sdk的portlet目录呢?
因为liferay6.0之前版本的开发都是基于ext开发,6.0统一到了plugin模式。但是依然兼容之前的,在在portlet目录就可以享用sdk所提供的ant方式编译部署打包等一切的便利。
大家有兴趣的可以一起讨论拍砖!