编译alfresco community源码

  今天我们来谈谈如何由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服务器。

  3、配置Ant

  4、在Eclipse打开Ant窗口,放到最右边

  5、在执行编译前,我们还需要做一些工作

  6、好了,现在我们开始运行build-tomcat这个target了

  7、 配置Alfresco的runtime环境

  8、创建一个MySQL数据库

  9、好了,所有工作都做完了,可以直接运行tomcat了。

  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了。

  大家可以按照这个试试,有什么问题提出来一起研究吧~

文库: