Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Warning

July 19, 2010: These instructions are out-of-date, confusing and need a full review. If you are using Eclipse with DSpace for development, please help us to simplify and clarify these instructions. Please, work with the new page at DSpace IDE - Eclipse, Git, Maven, and Tomcat.

Table of Contents
outlinetrue
stylenone

Eclipse Tools: Prerequisite Installation

...

Obviously, to do this you will need to have Eclipse Installed: http://www.eclipse.org/Image Removed

This HOW-TO has been written using Eclipse 3.4 (Ganymede), but it is also known to work in Eclipse 3.3 as well. The information here probably works with other versions of Eclipse, but no guarantees are made.

...

On this page you will find a couple of pre-set install sites. For the plugins that we need we also need to add some new sites to this list (see next section), which is done by clicking on the "Available Software" tab, and clicking "Add Site.." on the right.

After you have installed all of these plugins, or in-between each one, you will need to restart the Eclipse workspace

...

, and clicking "Add Site.." on the right.

After you have installed all of these plugins, or in-between each one, you will need to restart the Eclipse workspace

Install the SVN Plugin

Subversion (SVN) enables you to checkout the DSpace source code and keep up-to-date with the latest changes to the platform from DSpace Repository.

Eclipse >= 3.5:

In Eclipse select "Help --> Install New Software...". 
Image Added
In the drop down list select "Helios - http://download.eclipse.org/release/helios."
Image Added
From the list select "Collaboration --> Subversive SVN Team Provider"
Image Added
Click the "Next >" button and follow the dialogs to install the plugins.

Restart Eclipse.

Eclipse ask you which Subversive Connector you want to use. Choose SVN Kit or JavaHL.

Eclipse < 3.5:

There are 2 popular SVN plugins for Eclipse. You only need to install one of them:

You should install the most recent version of your preferred client. The recommendation is SubVersive (as it is an Eclipse Incubation project), and the remainder of this tutorial assumes that this is the one you are using.

...

Install the most recent version of the plugin, which is available for download from:

http://www.eclipsetotale.com/tomcatPlugin.htmlImage Removed

Unfortunately, there is no remote URL location for the sysdeo plugin. You will have to manually download the plugin and unzip it into the [eclipse]/plugins directory. Also, you will need to have Tomcat installed locally. Obtain the latest version of Tomcat from: http://jakarta.apache.org/tomcatImage Removed

Maven 2 Plugin (required for DSpace 1.5)

...

Prerequisite: Before installing the Maven 2 Plugin for Eclipse, you must install Apache Maven from http://maven.apache.org/Image Removed

Install the most recent version of the plugin using the below remote URL.

Remote URL: http://m2eclipse.sonatype.org/update/Image Removed

The remote URL for the m2eclipse project has moved to: http://m2eclipse.sonatype.org/sites/m2e

Web Standard Tools (optional)

...

  1. Download the DSpace's Coding Conventions config file: dspace-eclipse-format.xml|IDE Integration - DSpace, Eclipse and Tomcat^dspace-eclipse-format.xml|||^Dspace-eclipse-format.xml|^Dspace-eclipse-format.xml|\Install either as workspace default or for your individual DSpace project(s).
  2. #* (Workspace Default) Select Window -> Preferences in Eclipse. Go to the Java -> Code Style -> Formatter. Click the "Import..." button and select the file.
    • (Individual Project) Right click on the DSpace project, select Properties. Go to the Java -> Code Style -> Formatter. Click the "Import..." button and select the file.

...

  1. Open the Tomcat preferences pane: Window -> Preferences -> Tomcat
  2. Select your installed Tomcat version, and its home page (hit Apply when finished). For example:
    • Tomcat Version: 6.x
    • Tomcat Home: /opt/tomcat6
  3. Under Tomcat -> Advanced, enter the Tomcat Base (hit Apply when finished). This should generally be the same as the Tomcat Home:
    • Tomcat Base: /opt/tomcat6
  4. Under Tomcat -> JVM Settings, you need to enter the JDK's tools.jar file for the "Classpath (before generated classpath)". You should find this in the directory [installed jdk]/lib/tools.jar Note: If you are using Mac OS X, the tools.jar library does not exist on the platform. Instead using classes.jar found at: /System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Classes/classes.jar
  5. Under Tomcat -> Tomcat Manager App, enter a username and password for the desired manager user. If this user doesn't already exist hit "Add user to tomcat-users.xml" (hit Apply when finished)

...

  1. Open the SVN Repository Exploring Perspective by using Window -> Open Perspective -> Other -> SVN Repository Exploring
  2. Right click in the "SVN Repository" View on the left, and use: New -> Repository Location
  3. Enter the location of the DSpace SVN repository: https://dspace.svn.sourceforge.net/svnroot/dspaceImage Removed

"Access restriction: The type DataSource is not accessible due to restriction on required library <jre_path>/lib/rt.jar"

...

NEEDS UPDATING – Not sure this actually works! [15 Apr 2008]

Checking out DSpace as a Tomcat Project

...

The installation path you give should be:

Code Block

  dspace.dir = <workspace>/dspace/working-copy

where <workspace> is the absolute path to your Eclipse workspace, and "working-copy" is the name of the directory into which we will install the DSpace application. Other configuration that you should ensure are set correctly are as follows (assuming installation on the local machine):

Code Block

  # DSpace base URL.  Include port number etc., but NOT trailing slash
  dspace.url = http://localhost:8080/dspace-svn

  # DSpace host name - should match base URL.  Do not include port number
  dspace.hostname = localhost

  # Name of the site
  dspace.name = DSpace 1.4.x in Eclipse

...

The following resources will be needed to be set to SVN Ignore, to ensure that unwanted resources are not committed to the repository:

Code Block

.cvsignore
.tomcatproject
build/
jsp/local
jsp/WEB-INF/lib
jsp/WEB-INF/web.xml
work
working-copy

...

You should now find the DSpace deployed; try the following URL to see if it is working correctly:

http://localhost:8080/dspace-svnImage Removed

Note that due to the limitations of the 1.4.x source structure, it is only possible to view one web application at a time from the same project when deployed within Eclipse. To work on the web interface and the OAI interface simultaneously you must use DSpace 1.5 and follow the instructions below. Otherwise, it is possible to modify this HOW-TO so that the OAI interface is deployed in Tomcat rather than the usual web interface.

...

  • dspace - The root module, which builds all of DSpace and holds the DSpace configurations
  • dspace-api - The DSpace API module, which contains all the primary business logic (Java code)
  • dspace-jspui - The JSP-based User Interface for DSpace
  • dspace-xmlui - The XML-based User Interface for DSpace (also known as Manakin)
    • dspace-xmlui-api - The primary API for the XML-UI for DSpace (including all Aspect Java code)
    • dspace-xmlui-wing - The Digital Repository Interface (DRI) API for XML-UI
    • dspace-xmlui-webapp - The XML-UI web application configurations (including all Aspect & Theme definitions)
  • dspace-oai - The OAI-PMH interface for DSpace
  • dspace-lni - The Lightweight Network Interface (LNI) for DSpace
    • dspace-lni-core - The primary API for LNI
    • dspace-lni-client - The client API for LNI (along with a simple sample client)
    • dspace-lni-webapp - The LNI web application configurations
  • dspace-sword - The SWORD [interface for DSpace
    • dspace-sword-api - The SWORD API
    • dspace-sword-webapp - The SWORD web application
  • language-packs - The Internalization (I18N) language packs for DSpace (Currently JSP-UI only - the I18N for Manakin is in the dspace-xmlui-webapp module)
  • pom.xml - The Maven module, which contains the primary Maven configurations to build DSpace

...

  1. The One-Big-Project Approach (RECOMMENDED - easiest to setup)
    • Advantage(s): Only a single project in your Eclipse workspace. Can perform debugging through Eclipse Tomcat Plugin (but only for ONE user interface). Can have multiple DSpace 1.5.x versions running side-by-side in one Eclipse Workspace.
    • Disadvantage(s): Can only debug ONE user interface at a time. This is a limitation of the Eclipse Tomcat Plugin, which only allows you to define a single Tomcat 'context' per Eclipse project. Slower build times since you are compiling all of the DSpace modules from source.
  2. The One-Project-Per-Module Approach (A little more complex to setup, but allows more flexibility)
    • Advantage(s): Can use the Eclipse Tomcat Plugin for debugging, and debug multiple interfaces at the same time (e.g. JSPUI side-by-side with XMLUI, OAI-PMH and/or LNI)
    • Disadvantage(s): Since each Eclipse project must be named the same as the corresponding DSpace module, you*cannot* have two DSpace 1.5.x (or above) versions running side-by-side in the same Eclipse Workspace.
  3. The Combined Approach (More difficult to setup. Need to verify if this route still works - 27 Mar 2008)
    • Advantage(s): Can use the Eclipse Tomcat Plugin for debugging. Tries to combine the above two approaches to allow you to have different versions of modules checked out as separate projects in Eclipse. It also allows you to simultaneously debug multiple user interfaces (XML-UI, JSP-UI, OAI-PMH, and/or LNI) in Eclipse via the Tomcat Plugin.
    • Disadvantage(s): It's definitely a little "messy" as far as Eclipse is concerned, since you will have several Eclipse projects within a primary project (and Eclipse favors a "flat" structure for its Projects). In addition, you must checkout and work with DSpace 1.5 code into a location not under your normal Eclipse workspace.

The One-Big-Project Approach

Warning

Eclipse no longer supports the "Enable Nested Modules" option described below. See: https://issues.sonatype.org/browse/MNGECLIPSE-2291

This is the simplest approach and therefore is highly recommended for any new/novice developers. This approach allows you to checkout DSpace 1.5 as a single Eclipse Project. However, it only allows you to define a single user interface to debug tools using the Eclipse Tomcat plugin.

  1. Select File -> New... -> Project in Eclipse
  2. Select SVN -> Projects from SVN and click "Next"
  3. Select to "Use an existing repository" and choose the DSpace SourceForge repository (https://dspace.svn.sourceforge.net/svnroot/dspaceImage Removed)
  4. Select the version of DSpace you want to checkout, likely either under "tags" (e.g. tags -> dspace-1_5) or "branches" (e.g. branches -> dspace-1_5_x). Click "Next"
  5. Choose "Check Out as Project with the name specified". Give it a name (e.g. dspace-1_5_x), and click "Finish". Eclipse will then checkout the DSpace 1.5 source code from SVN.
  6. Return to the "Java Perspective" in Eclipse ("Window -> Open Perspective -> Java"). You should see your newly created project in the Package Explorer.
  7. Right-Click on your project and select "Maven -> Enable Dependency Management". Eclipse will now read the Maven pom.xml configuration file and auto-configure your project as a "Java Project"!
  8. Right-Click again, and select "Maven -> Enable Nested Modules". This tells Maven Eclipse plugin that your project contains several nested sub-modules within it.
  9. Right-Click one last time, and select "Maven -> Update Source Folders" ("Maven -> Download Sources" for Eclipse 3.2.0). Eclipse will now automatically locate all the DSpace Java source code, as well as all the 3rd party JAR dependencies.

...

  1. First, we will checkout DSpace 1.5 from SVN. You must perform the checkout into a location that is not under your Eclipse workspace folder. Therefore, if you perform an SVN checkout using Eclipse, you must move that folder to another location before you can proceed.
    • (e.g.) svn co https://dspace.svn.sourceforge.net/svnroot/dspace/branches/dspace-1_5_xImage Removed dspace-1_5_x-src
    • NOTE: Make sure that you checkout DSpace 1.5 to a "stable" location (i.e. not to a temporary directory like /tmp). During the next step (when you will import the DSpace modules into Eclipse), Eclipse will not copy the code into your Eclipse workspace. Rather, it will just reference the location where you have checked out DSpace 1.5 via SVN...so, this location will (in a sense) become your DSpace 1.5 "workspace".
    • ADDITIONAL NOTE: This requirement to checkout DSpace 1.5 to a folder not in your Eclipse workspace unfortunately seems to be a limitation of the m2eclipse Maven plugin for Eclipse. If you attempt to re-import Maven projects which already exist in your Eclipse workspace, you will end up with a bunch of empty project folders.
  2. Next, we will point Eclipse at the location where you checked out DSpace 1.5 to, and tell Eclipse to import it as a series of Maven Projects
    • Select File -> Import in Eclipse
    • Select General -> Maven Projects as the type of source. Click "Next".
    • Browse to the location where you just checked out DSpace 1.5
    • Eclipse will automatically parse out all the various Maven projects which are located there (based on the location of the Maven pom.xml file in each DSpace module). It will display a list of all DSpace modules & sub-modules, and allow you to check which ones you wish to import. If you don't want to import all the modules at this time, you can always go back and repeat this same process to checkout additional modules.
    • It is*highly recommended to always select the top-level pom.xml, since this is the module which builds DSpace.
    • It is also*recommended to uncheck any sub-modules of dspace-xmlui or dspace-lni (e.g. dspace-xmlui-api is a submodule of dspace-xmlui). This will decrease the number of separate DSpace projects in your Eclipse workspace.
      • You may choose to uncheck any DSpace modules you are not planning on working with. For example, if you don't want to work with the DSpace LNI, then uncheck all of its modules (dspace-lni, dspace-lni-core, dspace-lni-client, dspace-lni-webapp). As mentioned, you can always repeat this process to import the DSpace LNI code if you need to, afterall. (smile)
    • After you have selected the DSpace modules you wish to work with, click "Next". Eclipse will now create the number of DSpace projects you selected, and auto-identify those projects which contain Java code as Java Projects. It will also locate all the 3rd party JAR dependencies for each project and add them automatically to your project's classpath.
  3. You should now have separate Eclipse projects for your various DSpace modules. Important: You'll notice that Eclipse did not move this code into your normal Eclipse workspace. Rather, Eclipse is just referencing those folders whereever you originally checked them out via SVN.

...

  • What you've done in this Combined Approach is basically "trick" Eclipse into allowing you to have projects within projects. In addition, Eclipse has not created folders in the normal workspace for any of this DSpace 1.5 code. Rather, it is just referencing the code in the location where you first checked it out via SVN.
  • Because you have "tricked" it, Eclipse may not always refresh your DSpace 1.5 projects properly after a rebuild/update. This is easily fixed by manually selecting all the projects, Right-clicking and choosing "Refresh"

Hints/Tips:

  • If you want, you can run

...

  • multiple versions of DSpace 1.5.x (or above) side-by-side in your Eclipse workspace.
    • To do so, you first must rename*all* of your existing DSpace 1.5.x projects (since Eclipse doesn't allow two projects of the same name). Right click on the project and select "Refactor -> Rename". Don't worry, this will not change the names of the folders on your filesystem (so Maven will still work perfectly).
      • e.g. Rename dspace-api project to dspace-api-1.5alpha (for the 1.5alpha version of this project).
    • After renaming all of your existing DSpace 1.5.x projects, you can follow the directions for the The Combined Approach again to successfully checkout & import a different version of DSpace 1.5.x into the same Eclipse workspace.
  • Because of the number of DSpace 1.5 projects, you may want to change your Eclipse Package Explorer to display your projects as "Working Sets". This allows you to group similar projects together within a virtual "folder" in Eclipse.
    • Click on the downward arrow in your "Package Explorer"
    • Select "Configure Working Sets"
    • Create a "New" working set and name it "DSpace 1.5" (or similar). Select all your DSpace 1.5 projects as its "contents"
    • Ensure it is set to "visible" by placing a checkmark next to your new Working Set. Click "Ok" to save.
    • Go back to the downward arrow in your "Package Explorer", and select "Top Level Elements -> Working Sets". Your Eclipse should now show a "DSpace 1.5" folder, which contains all your DSpace projects.

...

To ease building/cleaning your DSpace projects, it's highly recommended to create some quick "tasks" within Eclipse's "External Tools Dialog". To get to the External Tools Dialog, look in the Eclipse toolbar for the Green "play" (>) button with a Red toolbox under it. Click on it, and select "Open External Tools Dialog". *

  • DSpace Clean task (Cleans all of DSpace)
    • Right click on "Maven Build" section and select "New"
    • Name it something like "DSpace Clean"
    • Click the "Browse Workspace" button, and select your dspace sub-module (or separate project).
    • In the Goals, enter "clean", click Apply. *
  • DSpace Assemble task (Assembles all of DSpace)
    • Right click on "Maven Build" section and select "New"
    • Name it something like "DSpace Assemble"
    • Click the "Browse Workspace" button, and select your dspace sub-module (or separate project).
    • In the Goals, enter "package", click Apply. *
  • JSPUI Assemble task (Assembles just the JSP-UI - useful if you only changed the JSP-UI)
    • Right click on "Maven Build" section and select "New"
    • Name it something like "JSPUI Assemble"
    • Click the "Browse Workspace" button, and select your dspace-jspui sub-module (or separate project).
    • In the Goals, enter "package", click Apply. *
  • XMLUI Assemble task (Assembles just the XML-UI - useful if you only changed the XML-UI)
    • Right click on "Maven Build" section and select "New"
    • Name it something like "XMLUI Assemble"
    • Click the "Browse Workspace" button, and select your dspace-xmlui sub-module (or separate project).
    • In the Goals, enter "package", click Apply.
  • You can also create tasks to assemble just the OAI-PMH interface (dspace-oai) or LNI (dspace-lni) similar to those for the XMLUI and JSPUI.

...

If you are looking at the Console view in Eclipse, you will know the build has been successful when you see it terminate with a message similar to the following:

Code Block

[INFO] ----------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL org.dspace:dspace:pom:1.5-SNAPSHOT (  task-segment: [package] )
[INFO] ----------------------------------------------------------------------------
[INFO] Total time: 32 second
[INFO] Finished at: Tue Nov 27 14:17:56 CST 2007
[INFO] Memory 8M/63M
[INFO] ----------------------------------------------------------------------------

...

The installation path you give should be:

Code Block

  dspace.dir = <dspace>

where <dspace> is the absolute path of the folder where you want DSpace to be installed. Other configuration that you should ensure are set correctly are as follows (assuming installation on the local machine):

Code Block

  # DSpace base URL.  Include port number etc., but NOT trailing slash
  dspace.url = http://localhost:8080/dspace-jspui

  # DSpace host name - should match base URL.  Do not include port number
  dspace.hostname = localhost

  # Name of the site
  dspace.name = DSpace 1.5

...

Go back into each of the Maven build tasks you defined in the Defining Maven Tasks in Eclipse section above, and add the following parameter:

Code Block

   dspace.config = <dspace>/config/dspace.cfg

...

The project properties that you would need to modify are available by Right Clicking on the project name and
selecting Properties -> Tomcat.

  • For

...

  • One-Big-Project Approach

...

    • Make sure to check the option "Is a Tomcat Project"
    • Set the context name to be similar to: dspace-1_5 (this context path can be anything and is what you want Tomcat to use in the URL)
    • You will have to choose which interface you want to debug, since only one interface is supported at a time.
      • If debugging dspace-jspui, set the web application root to be: /dspace/target/dspace-<version>-build.dir/webapps/jspui
      • If debugging dspace-oai, set the web application root to be: /dspace/target/dspace-<version>-build.dir/webapps/oai
      • If debugging dspace-xmlui, set the web application root to be: /dspace/target/dspace-<version>-build.dir/webapps/xmlui
      • If debugging dspace-lni, set the web application root to be: /dspace/target/dspace-<version>-build.dir/webapps/lni
  • For multi-project approaches, you can debug multiple interfaces at once. Therefore, you can set up each of the below projects to run under separate Tomcat contexts:
    • dspace-jspui
      • Make sure to check the option "Is a Tomcat Project"
      • Set the context name to be similar to: dspace-jspui
      • Set the web application root to be: /target/dspace-jspui-<version>
    • dspace-oai
      • Make sure to check the option "Is a Tomcat Project"
      • Set the context name to be similar to: dspace-oai
      • Set the web application root to be: /target/dspace-oai-<version>
    • dspace-xmlui
      • Make sure to check the option "Is a Tomcat Project"
      • Set the context name to be similar to: dspace-xmlui
      • Set the web application root to be: /dspace-xmlui-webapp/target/dspace-xmlui-webapp-<version>
    • dspace-lni
      • Make sure to check the option "Is a Tomcat Project"
      • Set the context name to be similar to: dspace-lni
      • Set the web application root to be: /dspace-lni-webapp/target/dspace-lni-webapp-<version>

...

You should now find the web interface deployed; try one of the following URLs to see if they are working:

http://localhost:8080/dspace-jspuiImage Removed (JSP-UI)

http://localhost:8080/dspace-oai/request?verb=IdentifyImage Removed (OAI-PMH)

http://localhost:8080/dspace-xmluiImage Removed (XML-UI)

Viewing the Database in Eclipse

...

  • Open the file dspace-svn/src/org/dspace/app/webui/servlet/DSpaceServlet.java
  • Scroll down to the method:
Code Block

 private void processRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException

and find the line of code which reads:

Code Block

  // Are we resuming a previous request that was interrupted for
  // authentication?
  request = Authenticate.getRealRequest(request);

...

  • Open the file <workspace>/dspace-api/src/main/java/org/dspace/browse/Browse.java
  • Scroll down to the method:
Code Block

public static BrowseInfo getItemsByTitle(BrowseScope scope)
            throws SQLException
{
        scope.setBrowseType(ITEMS_BY_TITLE_BROWSE);
        scope.setAscending(true);
        scope.setSortByTitle(null);

        return doBrowse(scope);
}

...