Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

The following notes assume a binary installation of DSpace 1.5.0, under the directories:

  • Wiki Markup*{{\[source\]}}* is the "source" directory where builds are done.unmigrated-wiki-markup
  • *{{\[dspace\]}}* is the target runtime directory, e.g. {{/dspace}}

Procedure to Add a Plugin

Step 1: Install sources

Wiki MarkupAdd the necessary Java source files to the _overlay directory_ for each module that you want to have access to the plugin. This is {{_\
[source\]_/dspace/modules/_\{MODULE\}_/src/main/java}} for additional Java sources.

Note that adding a plugin to multiple modules requires a separate copy of the source files for each module, which might complicate maintenance when you have to update the sources; use symbolic links to work around this if you are familiar with them.

...

Code Block
  edu/mit/libraries/facade/PIMConstants.java
  edu/mit/libraries/facade/PIMCrosswalk.java
  edu/mit/libraries/facade/PIMMETSIngester.java

...

For the example, assume these files reside under a _development_ directory, _{{\{development\}}}_.
To add these classes to the LNI module, we install the sources under {{_\[source\]_/dspace/modules/lni/src/main/java}} with the following commands:

Code Block
 mkdir -p [source]/dspace/modules/lni/src/main/java/edu/mit/libraries/facade
 cp {development}/edu/mit/libraries/facade/*.java [source]/dspace/modules/lni/src/main/java/edu/mit/libraries/facade

Step 2: Update DSpace Configuration

...

If you maintain the DSpace configuration file in your source directory and use the build tools to copy it into the runtime hierarchy, then update the source copy of {{of dspace.cfg}} now. (In my development environment, I just edit the runtime copy in {{\[dspace\]/config/dspace.cfg}}.)

Add entries for the crosswalks, e.g. like the bold line here (other entries elided for clarity):

...

Step 3: Modify the POM to Add Dependencies

...

If your code has any new external dependencies (i.e. it needs modules not already required by DSpace) then you need to add those to the POM for the overlay module. In this example, we add the dependency lines to the LNI module's POM at {{_\[source\]_/dspace/modules/lni/pom.xml}}

Code Block
  
 <project>
   ...
   <dependencies>
     ...
     <dependency>
       <groupId>org.openrdf</groupId>
       <artifactId>sesame</artifactId>
       <version>2.1</version>
     </dependency>
   </dependencies>
 </project>

...

You can also use the overlay mechanism to implement a local change or bug-fix to the DSpace codebase. The process is exactly the same as for adding plugin implementations, only you add the appropriate DSpace class files to the source directory instead. These will take precedence over the distributed code in the classloader.unmigrated-wiki-markup

Again, add the sources under {{_\[source\]_/dspace/modules/_\{MODULE\}_/src/main/java}} , only under the {{org/dspace/...}} hierarchy.

For example, to fix a bug in the org.dspace.app.oai.DSpaceOAICatalog class, you add that file in Step 1 instead of your own source:

...