Dspace1.5 在 Eclipse 中的集成

    DSpace的最新版本是1.5,和以前的版本最大不同是它根据用户接口和web服务划分成很多模块,由maven管理,

每个模块都可以作为单独的一个工程来使用。

   

一.    准备工作

 

    我的环境 Eclipse3.3 欧版,安装如下插件。下面是插件的升级地址,可以从Eclipse中直接update。其中 Sysdeo Tomcat plugin 是为项目调试准备的。如果某个插件有相应的依赖项未安装,找到并update即可。

Tomcat、Svn、Maven 以及 Postgre数据库,相信你已经在本机安装并配置好了。

 

       SubVersive plugin:         http://www.polarion.org/projects/subversive/download/1.1/update-site/

       SubClipse plugin:            http://subclipse.tigris.org/update_1.2.x

       Sysdeo Tomcat pluginhttp://www.eclipsetotale.com/tomcatPlugin.html

       Maven2 plugin:               http://m2eclipse.sonatype.org/update/

 

 

 二.    集成步骤

 

    1.    dspace官网提供3种集成方式,One-Big-Project Approach 、The One-Project-Per-Module Approch、  The Combined Approach ,我选用的是第二种方式The One-Project-Per-Module Approch,这种方式的优点是每个模块单独作为一个项目,可同时调试;第一种方式是所有模块生成一整个大的项目,只能作为一个context来调试。

 

           先svn检出源码,选择所有七个模块执行maven插件的2步操作

Maven -> Enable Dependency Management 和 Maven -> Update Source Folders。

 

    2.    在Build and Install DSpace的过程中,新建的maven任务,先建立 Dspace-Assemble、Dspace-Clean、Jspui-Assemble 几个就行,而且没有必要像原文说的在External Tools Dialog中设置,只要在Open Run Dialog 中设定即可;运行 Dspace-Assemble,编译成功后刷新项目,会发现在每个模块下面生成了一个target目录。

 

    3.    建立build目标文件夹,比如在d盘建一个文件夹dsapce,再在下面建个config目录(D:\dspace\config)。

拷贝[workspace]/dspace/target/dspace-[version].dir/config/dspace.cfg 到 D:\dspace\config 下并修改相应参数,如 dspace.dir = [dspace]  修改为 dspace.dir = d:/dspace 。

 

           然后 ant 执行 [workspace]/dspace/target/dspace-[version].dir 目录下面的build.xml脚本的

fresh-install。(之前 Postgre 数据库先建好)。

 

    4.   dspace1.4中的方法是在build的目标文件夹下的bin目录里 (如:D:\dspace\bin),cmd命令行执行

dsrun org.dspace.administer.CreateAdministrator ,按照提示建立一个 dspace 的用户 (E-Person);

          dspace1.5中没有dsrun.bat等文件,如果想要使用cmd命令,只需从dspace1.4版本的相应目录下,拷贝3个文件过来(dsrun.bat, buildpath.bat, dsrun)即可。当然也可以从运行界面上来注册用户。

 

    5.    最后将build生成的模块放到tomcat的webapp下、即可运行演示。

          

           如果想在Eclipse中调试,前面的Sysdeo Tomcat plugin 插件就用上了

 

           首先修改第二步中设定的maven任务,在 Dspace-Assemble 和 Jspui-Assemble 中添加参数 dspace.config = d:/dspace/config/dspace.cfg

 

           其次是选中子项目(模块)如 Jspui ,右键->Properties->tomcat,插件属性里面选中 "Is a Tomcat Project",设定名字如 dspace-jspui ,设定web root 如 \dspace-jspui-webapp\target\dspace-jspui-webapp-1.5.1-SNAPSHOT 。

 

           哦了,然后通过插件启动Tomcat,设置断点就可以调试了。

 

三.    经验提示

 

    1.    数据库最好是Postgre8.2 ,记得用Postgre8.3时会碰到问题。

 

    2.    启动Tomcat出现如下错误。

严重: Error configuring application listener of class org.apache.commons.fileupload.servlet.FileCleanerCleanup
java.lang.ClassNotFoundException: org.apache.commons.fileupload.servlet.FileCleanerCleanup
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3770)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
	at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2008-5-30 9:54:52 org.apache.catalina.core.StandardContext listenerStart

   

    是因为 FileCleanerCleanupcommons-fileupload1.2 以后的版本才有的类,下载的文件中jar包的版本是1.1的所以会报错。

 

    因为dspace子项目(模块)下的Pom文件中没有依赖项的版本号,自己添加version也还是不行,系统还是找原来的版本。后来看到Pom文件的parent设置如下:

 

   <parent>
      <groupId>org.dspace</groupId>
      <artifactId>dspace-parent</artifactId>
      <version>1.5.1-SNAPSHOT</version>
   </parent>

 

    这下就好办了,找到 C:\Documents and Settings\[current-user]\.m2\repository\org\dspace\dspace-parent\1.5.1-SNAPSHOT 目录,打开 dspace-parent-1.5.1-SNAPSHOT.pom 文件。修改相应依赖的版本号,maven会自动更新为新的jar包。

 

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.1</version>
</dependency>

 

     3.    启动Tomcat还可能出现“error listener start ”的错误,初看也不知道什么原因,描述的太简单了。遂查看了一下Tomcat的日志获取到错误的详细信息如下。

 

严重: Error configuring application listener of class org.apache.commons.fileupload.servlet.FileCleanerCleanup
java.lang.NoClassDefFoundError: org.apache.commons.io.FileCleaningTracker

 

    这个错误是因为 FileCleaningTrackercommons-io1.4版本才有的类。看来也是由于下载的jar包版本低造成的,用2中的方法来解决这个问题咯。

 

 

 

 

 

 

    参见Dspace的wiki:http://wiki.dspace.org/index.php/IDE_Integration:_DSpace,_Eclipse_and_Tomcat#Eclipse

 

 

 

 

 

 

 

 

你可能感兴趣的:(java,apache,eclipse,maven,tomcat)