LifeRay的portlet开发(使用Eclipse)- 想说Hello不容易!

来源:互联网 发布:sql判断师傅为空 编辑:程序博客网 时间:2024/04/29 15:41

备注:本博客主要目的是记录开发调试过程的所有事情,难免冗长,并且不是严格的记录。主要供自己查找和回顾开发调试过程。他人阅读的话,仅供参考。文末也提供了有用的可下载的参考资料。


采用NetBeans开发LifeRay Portlet有一定的困难,所以并行的,尝试以Eclipse来开发。这个开发平台有更多的原厂(LifeRay)支持和社区、网络文章支持。


以下的步骤是按照胡启稳的这个文章来的。“Liferay 6.1开发学习(一):环境搭建”。只是变更成了最新的对应软件版本。


http://www.huqiwen.com/2012/08/30/liferay-6-1-development-study-1/


对应的,以下是LifeRay的开发者网站的对应部分,英文的,似乎更老。胡启稳的文章更对中国人民的胃口。


https://dev.liferay.com/develop/learning-paths/mvc/-/knowledge_base/6-2/developing-apps-with-liferay-ide





首先是下载。下载如下所示的整合好的Eclipse+LifeRay IDE:



启动Eclipse后,配置LifeRay SDK:

然后配置Liferay运行环境:




因为实际运行Tomcat的目录是C:\LR62\liferay-portal-6.2-ce-ga4\tomcat-7.0.42, 如下:


Liferay的开发环境我们需要工程的编码为UTF-8,新安装的Eclipse的默认编码为GBK,修改方式为Window - Preferences - General - Workspace,在这下面的Text file encoding处选择other,UTF-8。点击OK保存。


在Eclipse中尝试启动TomcatServer,有如下错误,估计是因为这个Server和真正的Server不是同一个。:

==========================================================================

经过检查,确实是Tomcat没有设置对。关键是要选择Liferay V6.2 CE (Tomcat 7) 那一项。如下:



然后设置了更多的相关目录和文件选项,如下:


然后再启动这个Server,就正常可以启动了,部分的显示如下:

尝试第一个Portlet:







分析: 因为网络问题,没有能下载如下的插件:


https://services.gradle.org/distributions/gradle-2.2.1-bin.zip

为了解决这个问题,用了几种方法,还是没有成功,根源在于网络不通:


于是用另外一种方法:



用VPN但是有问题:


隔了一晚上,20151104,下载
https://services.gradle.org/distributions/gradle-2.2.1-bin.zip
成功了。然后下载全部也成功了。
https://services.gradle.org/distributions/gradle-2.2.1-all.zip

干脆直接运行一下Eclipse看看如何。还是“Connection timed out”。

3篇网络文章,介绍如何安装Gradle到Eclipse, http://my.oschina.net/moziqi/blog/308842

http://www.360doc.com/content/15/0611/15/10648726_477394189.shtml

http://www.360doc.com/content/15/1104/15/28805942_510702000.shtml


Gradle下载安装测试成功了。
Eclipse里面Gradle也安装成功了,但是新建LifeRay Portlet的时候还是去下载,https://services.gradle.org/distributions/gradle-2.2.1-bin.zip,还是不行。







用marketplace:




还是不行,所以改另外一条路:



可惜还是不行。但是新建LifeRay Portlet的时候还是去下载,https://services.gradle.org/distributions/gradle-2.2.1-bin.zip,还是不行。可是直接用IE是可以下载的。

估计是网络代理设置问题,于是查到一篇文章:


http://stackoverflow.com/questions/3841199/is-there-any-way-of-configuring-eclipse-ide-proxy-settings-via-an-autoproxy-conf

通过它学会了下载和解析公司的网络代理脚本,直接获得IP地址形式的代理。

在另外一个文件(Liferay_6.0.5开发指南.doc)里面找到如下一段话:


“4ant部署时的服务器路径等信息从哪里读取

由于Liferay 6有了SDK,所以我们通过Liferay IDE开发或者是不使用IDE时,服务器的路径等信息都是保存在SDK目录下面的build.properties里面。

 

这个里面存储的信息有我们使用的ant部署时所涉及到的相关路径信息。同样,Liferay不建议直接修改此文件,而是建立一个build.{user.name}.properties的文件来个性化我们自己的配置信息。这里的user.name是当前系统的登录用户。如我的电脑当前的登录用户为administrator,则这个文件命名为build.administrator.properties

 

我们需要覆盖build.properties里面的内容的直接写在这个文件里面,如想更改tomcat版本或者是服务器目录名,则只需要在build.administrator.properties里面写上下面的信息,其他的不用动。”



============================================================================================================

一般来说,设置好开发环境,开发出第一段“Hello, World”代码,并运行,应该是比较容易的事情。但是经过这次的体验,发现不是那么容易! 于是又回到Netbeans去尝试,无果。所以,要把本篇博客的名称加上后一部分:

- 想说Hello不容易!

不过呢,在写这段话的时候,其实已经跨过了最难的部分。是这样的:

今天晚上在家里再次试图创建一个Portlet,还是出现下载gradle-2.2.1-bin.zip的问题。然后又尝试用Maven的方式来创建,也是有问题。试来试去的时候,突然开始能下载gradle-2.2.1-bin.zip了!出现了一排变长中的点。于是焦急的等待下载完,甚至都不敢用手机查看点别的什么(担心影响了网络导致下载中断和失败)。终于,下载成功了!




虽然有如下的IvyDE resolve的问题,但是已经算枝节问题,不是什么大事儿了!


开始尝试第一个Portlet,出来了.java的示例代码片段了:


启动了Server,原来网站会出现在Eclipse的窗口中:


尝试Build之后的界面:



======================20151109===============================
在公司网络环境下,ivy的问题小叉不见了(其实问题还在,后添加的注释)。看起来都正常,但是在LifeRay的添加->应用程序->Sample里面找不到新建立的项目对应的Portlet :



================================20151110=============================================

怀疑是Ant部署的问题,查了Ant插件的情况,和对应的几个文件目录:

在Portlet的属性里面的Builder,没有提到Ant:

作为插件,没有问题:

LifeRay IDE的情况:

Outline 和Ant 里面看起来是正常的:


LifeRay的Deploy目录里面也出现了相应的XML文件。

Tomcat-7.0.42下面的webapp目录下,也出现了My Hello World Portlet-portlet的完整目录:

Tomcat-7.0.42下面的work目录下,也出现了My Hello World Portlet-portlet目录,但是为空目录,同类目录下其他目录也似乎都不完整:

按照某个博客文章,修改了SDK下的build.properties文件,app.server.parent.dir改成了直接的Tomcat目录的父目录:


有一个关于部署很重要的build-common-plugin.xml文件.


经查,在部署后,对应Deploy下面的xml文件,以及webapp下面的目录,看起来都正常,Tomcat也尝试去部署了该目录,log如下:


Nov 10, 2015 1:30:08 PM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory C:\LR62\liferay-portal-6.2-ce-ga4\tomcat-7.0.42\webapps\My Hello World Portlet-portlet<span style="color:#ff0000;"></span>

问题是到底部署成功了没有,如果部署成功了,为什么在Liferay的添加应用程序里面的Sample部分看不见它。(没有部署成功,因为Deploy目录下有残存的文件。后来添加的注释)


(因为Deploy下面没有找到.war文件,可能还是项目的文件有误。这个不对,deploy目录下的war文件在成功部署后会消失。后增加的注释。


 那就从建立项目开始重做一遍吧。创建Plugin项目不成功,怀疑可能是网络问题。

修改网络到native(Window - Preferrence - General - Network),结果是Build Failed.

修改网络到Direct,结果还是不行。于是改回Native,好像还可以下载东西,比较正常。

重新创建项目,不行,log如下:


[Console output redirected to file:C:\LR_Dev\workspace\.metadata\.plugins\com.liferay.ide.sdk.core\sdk.log]Parallel execution with configuration on demand is an incubating feature.:createPortlet FAILEDBUILD FAILEDTotal time: 27.488 secsFAILURE: Build failed with an exception.* Where:Build file 'C:\LR_Dev\SDK\liferay-plugins-sdk-6.2\sdk.gradle' line: 340* What went wrong:Execution failed for task ':createPortlet'.> Could not resolve all dependencies for configuration ':portalTaglib'.   > Could not resolve com.liferay.portal:util-taglib:7.0.0-SNAPSHOT.     Required by:         :liferay-plugins-sdk-6.2:unspecified      > Unable to load Maven meta-data from http://cdn.repository.liferay.com/nexus/content/groups/public/com/liferay/portal/util-taglib/7.0.0-SNAPSHOT/maven-metadata.xml.         > Could not GET 'http://cdn.repository.liferay.com/nexus/content/groups/public/com/liferay/portal/util-taglib/7.0.0-SNAPSHOT/maven-metadata.xml'.            > Connection to http://cdn.repository.liferay.com refused* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

在家里,Portlet项目Build很容易:


但是Ant下面的Build,用时很长(~10min),而且有个ECJ问题,导致FAIL.但是记得有个博客专门说了这个ECJ问题,待查:






=======================20151115====================================================================================

中间又经过了多次试验,并且购买了胡启稳的Liferay视频。视频很有用,但是不是直接就解决了我的问题。


其中尝试过直接用胡启稳下载的2个目录,但是还是不成功。


在Build过程中,有时出来一种直接能看到下载进度的窗口:




经过周末的一些工作,现在是周日晚上,非常兴奋地说,已经成功的说Hello了!见下图:

详细的明日再写,主要是:


(1)通过ivy下载完所有需要的文件。必要时手动下载。


这个是这样的:双击ant窗口下的Q1-portlet的时候,主要进行了下载工作。由于种种原因,又慢又不稳定。对一些停住了的下载,可以看见在下载的文件的源链接,在浏览器里直接下载,然后拷贝到相应目录中。这样解决了多个文件下载不下来的问题。另外,一次不行,多试几次,这也是没有办法的办法。


.ivy和lib目录下的文件,是需要远程下载的。由于种种原因,又慢又不稳定。这里把我下载完成的共享出来,直接拷贝两个目录到sdk目录下就可以。虽然导入Eclipse的SDK时显示6.2.0版本,其实已经是6.2.4版本。


http://pan.baidu.com/s/1i3ycrnn


(2)把Liferay和Tomcat的Bundle,改到和SDK目录并列的目录,并且名称一定为bundles。于是可以了。

因为buid成功了,deploy的时候报了几行错误,其中最后一行是,


于是,干脆把LifeRay和Tomcat的Bundle,就真的放到它要求的那个目录中。于是成功了!

(中途,已经安装设置好的portal目录,直接改为bundles,但是LifeRay还会把portal目录建立出来,并写入几个目录,包括deploy, data和logs)需要把war包拷贝到那个portal下的deploy目录,才会自动部署,并且在部署完成后,自动删除war包。


=========================20151116==============================================

最后,干脆重新做了一遍,一上来就把bundles目录搞对,然后在Eclipse里面配置好Server,指向这个bundles目录,启动,进行简单的LifeRay设置,保留了它的示例和开发用的数据库。然后再新建Liferay Plugin Project,然后再在里面建立Liferay portlet。然后双击Ant窗口下的portlet的名称,一切就可以了。虽然有一大堆Warning,留到以后再细看吧。


在Liferay网站增加portlet时可以看到示例下面出现了我自己编的portlet,加入到Liferay后一直在转圈等待,刷新一下浏览器就好了。



总结:

(1)在公司网络里面远程下载不行。用手机网络可以,但是要记住拔掉网线,否则仍然在公司网络。无需VPN。

(2)远程下载又慢又不稳定。下载好的在这里,可以拷贝到对应目录直接用。就不会再去下载了。

http://pan.baidu.com/s/1i3ycrnn

(3)目录问题,把捆绑到Tomcat的Liferay目录,放到和sdk平行的bundle目录下。才能正确。可以继续研究这个配置问题,估计还涉及配套的其他配置,如下:

“4ant部署时的服务器路径等信息从哪里读取

由于Liferay 6有了SDK,所以我们通过Liferay IDE开发或者是不使用IDE时,服务器的路径等信息都是保存在SDK目录下面的build.properties里面。

 

这个里面存储的信息有我们使用的ant部署时所涉及到的相关路径信息。同样,Liferay不建议直接修改此文件,而是建立一个build.{user.name}.properties的文件来个性化我们自己的配置信息。这里的user.name是当前系统的登录用户。如我的电脑当前的登录用户为administrator,则这个文件命名为build.administrator.properties

 

我们需要覆盖build.properties里面的内容的直接写在这个文件里面,如想更改tomcat版本或者是服务器目录名,则只需要在build.administrator.properties里面写上下面的信息,其他的不用动。”

(4)胡启稳的视频起了很好的作用,解释了大量细节,和整体思路。这个很有帮助。又出现了除了胡启稳视频外的另外的视频教程,需要的时候再考虑考虑是否购买。

(5)从10月27日到11月15日,为了说一个"Hello",花费了18天时间。不容易。如果早一点购买视频教程,估计至少缩短一半的时间。主要是看时间值钱,还是钱值钱的问题了。


--------------------------------------------本博客结束-----------------------------------------------------





 
















1 0
原创粉丝点击