liferay源代码编译调试修改

一、准备工作

  1. liferay-portal-tomcat-6.2-ce-ga6-20160112152609836.zip

  2. liferay-portal-src-6.2-ce-ga6-20160112152609836
    地址

https://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.2.5%20GA6/

  1. liferay-ide-updatesite-2.2.4-ga5-201507230603
    地址

https://sourceforge.net/projects/lportal/files/Liferay%20IDE/

  1. ant(构建脚本工具,请配置好环境变量)

  2. Java SDK 1.6(开发Java程序当然要安装,请配置好环境变量)

二、配置IDE环境

(1)集成Liferay

  1. 打开Eclipse,点击 Help - > Install New Software 点击Add,输入Name:Liferay IDE。点击Archive选择 liferay-ide-updatesite-2.2.2-ga3-201501300730.zip 包

  2. 依次点击OK -> Seclet All -> Next

  3. 坐等安装

  4. 安装完毕后重启Eclipse

  5. 配置Liferay SDK,依次点Windows -> Preferences,搜索Liferay,点击Installed Plugin SDKs

  6. 点击Add,配置SDK,选择Liferay SDK解压后的文件路径
    (2)Liferay运行环境
    打开Liferay IDE,Window–>Preferences–>Server–>Runtime Environment,点击右边Add…,在弹出的服务器选择里面选择Liferay,Inc–>Liferay v6.1 CE (Tomcat 7),请在“Create a new location server”打上勾。

点击Next,选择liferay-portal-6.1.2-ce-ga3的解压目录,如下图:在这里插入图片描述
点击Finish完成Tomcat的配置;
三、导入源代码
可以使用Eclipse的File–>Import–>General–>Existing Projects in to Workspace。将解压的源码导入到Eclipse中。

导入源码后,如果是6.1.1的源码,可能会出现如下的错误:Project ‘portal-trunk’ is missing required source folder: ‘portal-web/test’。此错误是说在build path下面找不到test目录。解决方法有两个(6.2.0中导入源码后,也有类似问题,解决方法同下面两个原理一样):

1、在portal-web下面建立一个名为test的目录。

2、打开源码工程目录下面的.classpath文件(使用文本编辑器打开,editplus或notepad++),在其中找到(大概在11行),将此行注释掉或删除。然后回到Eclipse中刷新工程(选中工程按F5,或在右键菜单中选择刷新)。
四、编译源码
既然要调试源码,首先是需要能够对源码进行编译。Liferay的源码不是一个普通的Web工程,不能使用普通的方法进行编译部署。但liferay官方已经提供了相应的ant脚本进行编译部署,但首先还需要一些简单的设置。

1、打开liferay的源码目录,找到app.server.properties文件。

2、将些文件复制一份,重命名为app.server.{username}.properties的文件,其中的{username}为当前系统的帐号名称。如我的系统帐号是08404,则将其命名为app.server.18404.properties即可。具体的可以打开CMD,以里面显示用户名为准。如下图:
在这里插入图片描述
3、打开此文件,找到app.server.parent.dir= p r o j e c t . d i r / . . / b u n d l e s {project.dir}/../bundles。将后面的 {project.dir}/…/bundles替换为下载的绑定Liferay的Tomcat的路径,如我的为E:/liferay/liferay-portal-6.1.2-ce-ga3,则修改后的地址为: app.server.parent.dir= E:/liferay/liferay-portal-6.1.2-ce-ga3。注意:从地址栏里面复制的地址为正斜杠,请修改成反斜杠。

4、现在Eclipse的ant面板里面点击,add buildfiles,将portal源码里面的build.xml文件添加到ant面板里面。

5、点开此build文件,点击deploy,即可将源码编译部署到tomcat中
六、遇到的问题
1、 Liferay的开发环境我们需要工程的编码为UTF-8,新安装的Eclipse的默认编码为GBK,修改方式为Windows->Preferences->General->Workspace,在这下面的Text file encoding处选择other,UTF-8。点击OK保存。

2、在编译的时候出现如下错误

Task cannot continue because ECJ is not installed.

ECJ was automatically installed. Please rerun your task.

这个问题在前面的博客里面提到过,http://www.huqiwen.com/2012/09/01/liferay-6-1-development-study-2-create-portlet-project/

解决方法为:

原因是ECJ包没有找到,ECJ是什么? ECJ是一个编译优化包,可以提升比Javac和JIKES更好的编译速度。要想使编译通过,有两个两个方法:

方法一:禁用ECJ。

在Liferay的SDK下面找到build.Administrator.properties,此处中间的Administrator名称不一定是这样的,具体体系名称是根据当前系统的用户名生成的。在里面添加如下内容

javac.compiler=modern
#javac.compiler=org.eclipse.jdt.core.JDTCompilerAdapter

方法二:将ECJ的包添加到ant的路径里面。

ecj.jar包可以在Liferay的工程的源码包\lib\development下面找到。将此包添加到ant的路径里面。Windows–>preferences–>Ant–>Runtime,在右边的Classpath–>Ant Home Entries(Default) -->Add External JARs,将ecj包添加进来。

2、在编译源码的时候出现:

Please set the environment variable ANT_OPTS to the recommended value of
“-Xmx1024m -XX:MaxPermSize=512m”.

这个提示的意思是说当前的JVM参数设置的太小了,不够liferay编译使用,需要增加JVM内存的分配,并建议将Xmx参数设置成1024m,MaxPermSize设置成512m。这是因为liferay的源码比较大,内容比较多,使用了大量的classloader等,需要比较大的内存。

解决方法上面已经给出提示了将环境变量(其实就是JVM的参数)推荐设置成上面的提示。

1)在Liferay工程的源码里面的build.xml上点击右键–>Run as–>External Tool Configurations

2)在tab标签里面找到Environment,点击new,在name里面输入ANT_OPTS,在value里面输入-Xmx1024m -XX:MaxPermSize=512m,然后点击apply。

3)再次运行ant的编译,即可正常编译。