今天我们来谈谈如何由Alfresco源码编译出一个完整得Alfresco Community ECM服务器。为什么要自己编译Alfresco源码?那好处可多了,比如很多配置可以自由指定,及时获得Alfresco的最新功能,最重要的一点就是 可以了解Alfresco的源码,甚至跟踪源码,搞清很多疑难问题。另外从我个人的角度来看,Alfresco的源码组织得相当漂亮,对于广大开发人员来 说,的确是一本不可多得的教材。
本文所使用的开发环境如下:
OS: Windows XP
IDE: Eclipse( plugins : Ant 1.7.1 , Subclipse 1.6.5)
JDK: 1.6
Application Server: Tomcat 6.0
Database: MySQL 5.5.8
言归正传,下面就们就一步步的介绍整个编译过程。
目录
1、第一步当然是准备环境,确保Tomcat、MySQL、Eclipse以及相应的插件都安装好。
2、把Alfresco的源码从SVN服务器上Check out出来,注意这是只读的SVN服务器。
6、好了,现在我们开始运行build-tomcat这个target了
1. 第一步当然是准备环境,确保Tomcat、MySQL、Eclipse以及相应的插件都安装好。
下面是一些链接:
Subclipse
MySQL
2. 把Alfresco的源码从SVN服务器上Check out出来,注意这是只读的SVN服务器。
URL: http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD。在 Eclipse的SVN视图中新建一远程资源,点击后展开如下:
新建一个project如下:
选择从SVN检出项目,如图
选择root, 点击Finish:
好了,Eclipse开始Check Out代码了,根据网速不同,所需时间也是不同的,不过因为代码量很多,估计至少也要个把小时,等待吧,生命就是这么耗过去的。。。
对了,有些同学的网络是有防火墙的,这时候需要给SVN设置一个代理。我发现在Eclipse里设置SVN的代理不管用,需要在SVN的配置目录设置,我的目录是:
C:\Documents and Settings\Rock\Application Data\Subversion\ servers ,打开servers这个文件,在[global]下添加如下信息:
[global] http-proxy-host = xxx.xxx.xxx.xxx http-proxy-port = 8080 http-proxy-username = Rock http-proxy-password = password
最后代码完全下载后,我们可以在Eclipse中看到如下Alfresco Community的整个源码:
项目结构在这里我们就不多说了,这个已经超出了本文的范围。
3. 配置Ant。
Alfresco的整个项目都是由Ant来打包得,在运行Ant之前,需要设置一些环境变量,步骤如下:
点击Window > Preferences,出现以下窗口,选择Ant > Runtime > Properties:
添加如下names/values:
env.TOMCAT_HOME = D:/work/tomcat/apache-tomcat-6.0.18 env.APP_TOMCAT_HOME = D:/work/tomcat/apache-tomcat-6.0.18
点击OK, 这里注意下,Ant的版本要高于1.7, 大家可以点击第一个Classpath看一下自己的Ant版本,如果Eclipse自带的版本很低,需要自己安装一个。然后修改下Classpath就可以了。
4. 在Eclipse打开Ant窗口,放到最右边。
点击Alfresco项目根目录下的build.xml,然后将其拖到Ant窗口中,会生成alfresco ant项目。点击它,展开如下:
我们会发现这里有非常多得ant target, 每一个target对应着某一项任务或某一个项目。默认的target就是”build-tomcat”,它会从source编译出一个完整的 alfresco.war和一个share.war,并把他们拷贝到刚刚配置的[TOMCAT_HOME]/webapps下。
5. 在执行编译前,我们还需要做一些工作。
我们希望在eclipse里运行Tomcat和Alfresco,首先我们要先建立一个server configuration。打开Eclipse的Servers面板,右键点击该面板,选择New->Server:
选择Tomcat v6.0 Server,自己配置好Server runtime environment,我是自己先额外安装了一个tomcat6,然后配置eclipse指向这个tomcat:
双击底部配好的服务器项,修改必要路径参数,如tomcat的安装位置:
我们再新建一个普通的project,在项目根目录下新建一个文件夹,并把这个文件夹link到tomcat的根目录下,这样我们就能在Eclipse下看到整个tomcat的目录了,便于我们观察tomcat的文件变化。
6. 好了,现在我们开始运行build-tomcat这个target了
右键一点,选择Debug As->Ant Build
好了,又是漫长的等待,我的XP跑了大概半小时。。。生命啊。不过我同事的air book仅跑了7分钟,看来酷睿的核还是不错的,有米就是好。
跑完后,发现[TOMCAT_HOME]/webapps下多了两个新jar:
7. 配置Alfresco的runtime环境。
Alfresco在启动前需要设置一些参数,例如用来存储文件的文件库的位置,以及配置tomcat去读取某些特定的配置文件。
首先在[TOMCAT_HOME]/shared/classes目录下添加alfresco-global.properties文件,这个文件是专门用来配置用户特定信息的,例如数据库连接信息,以及内容库目录信息。
另外要让tomcat读到这个文件,需要修改catalina.properties。注意不要在[TOMCAT_HOME]/conf下修改 这个文件,到Servers/your_tomcat_configeration/catalina.properies下进行修改,Eclipse在 tomcat运行时,会用该文件覆盖[TOMCAT_HOME]/conf下的文件。 至于这个Servers project,是Eclipse在你配置tomcat server时自动生成的。
添加catalina.properties的内容如下:
shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar 这样tomcat就可以读到shared下的所有配置文件了。
8. 创建一个MySQL数据库
我这里的数据库名叫alfresco_svn_head,注意这个要和上面配置的alfresco-global.properties中的内容相符合。
create database alfresco_svn_head;
9. 好了,所有工作都做完了,可以直接运行tomcat了。
在Servers面板右键点击我们配置好的tomcat, 选择Debug:
等吧,第一次运行的时间会有些长,因为要解压两个war包,还有创建Alfresco数据库。大概7,8分钟后,服务器就正常运作了,这个时候我们可以访问Alfresco了。
大家可以按照这个试试,有什么问题提出来一起研究吧~