Versions Compared

Key

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

...

How do I build the installer?

Wiki MarkupAfter downloading the code, run the following from {{\[installer-prototype\]/dspace/}} directory:

Code Block
mvn package -Pdspace-installer

...

How do I run the installer?

...

After the build completes, you'll see a JAR installer created at {{\[installer-prototype\]/dspace/target/dspace-installer-1.8.0-SNAPSHOT.jar}}unmigrated-wiki-markup

You can execute this Installer by running the following from the {{\[installer-prototype\]/dspace/target/}} directory:

Code Block
java -jar dspace-installer-1.8.0-SNAPSHOT.jar

...

  • The initial Installer is packaged using One-Jar. One-Jar essentially provides us with an easy way to create an executable JAR file.
  • When a user runs the JAR file, the One-JAR 'Boot' class is automatically calledunmigrated-wiki-markup
  • The One-JAR 'Boot' class automatically calls whatever is located at {{/main/main.jar}} within the installer.jar file. In our case, {{/main/main.jar}} calls the new dspace-install-api.jar file (see {{\[installer-prototype\]/dspace/src/assemble/installer-assembly.xml}} for details)
  • The dspace-install-api.jar is what actually performs the installation
    • This JAR actually embeds Apache Ant within it, and also contains a custom Ant script (installer-build.xml) which creates the DSpace installation directory similar to how it is created in past versions of DSpace. More notes on this below.
    unmigrated-wiki-markup
  • NOTE: The 'dspace-installer.jar' actually includes a full copy of all third party dependencies (JARs) as well as a copy of the DSpace install directory. See the {{\[installer-prototype\]/dspace/src/assemble/installer-assembly.xml}} for details.

Overview of dspace-install-api

The heart of this Installer is the new /dspace/dspace-install-api/ module. This module currently only includes a few new files:

  • Wiki Markup{{org.dspace.install.Installer}} \ - This is the main executable Installer class. Currently, it essentially just uses the Apache Ant API to call a custom Installer 'installer-build.xml' file (which is based off the default DSpace {{\[installer-prototype\]/dspace/src/main/config/build.xml}} file). NOTE: Even though this installer uses the Ant API, Ant is *not* required to be installed on the local system. The Ant API is included within the Installer itself.
  • /src/main/resources/installer-build.xml - This is the Ant Build file which actually tells Ant what it needs to do to actually perform the Install process.

...

This section is just a note on implementation details that have unfortunately ended in failure.unmigrated-wiki-markup

Initially, I thought: "If I can embed Ant in the installer to actually create the \ [dspace\] installation directory, why not go one step further and embed Maven, so that the Installer.jar just auto-builds DSpace for you via Maven". The main reason for potentially embedding Maven was to allow for a smaller Installer.jar overall (less duplication of JAR dependencies, for each of the various DSpace WARs), and to allow Maven to do what it does best (namely managing dependencies).

Unfortunately, that is not as simple as it may sound. To properly embed Maven into the Installer.jar, you'd need to do the following:

...

Wiki MarkupThe Conclusion: At least at this point in time, embedding Maven into an Installer is not really a plausible solution. We'll need to find a better way of avoiding an ever growing Installer.jar file (which is already rather large as some basic dependencies, e.g. dspace-api.jar, are duplicated 7 times in that one Installer.jar, once for each of the six webapps and once in \ [dspace\]/lib).