Page History
...
- dspace-parent is removed from the project, all dependency management is maintained in the modules that are using those dependencies, a dependency management section may be added to dspace/pom.xml or dspace/modules/pom.xml to support overriding the default dependencies identified in dspace-api, dspace,xmlui-api etc.
- dspace-api should be released with a separate version number separate the general DSpace 1.x.x release. For instance, taking on the idea of using Single digit version numbers for releases, We would promote using 1.8.0 for a release of dspace-api while using 8.0 for the release. (dspace-api-1.8.0.jar would be in dspace-release-8.0)
- dspace-api should be separated into individual modules. The codebase should be evaluated to determine the extraction points, But strong candidates for pushing into separate packages are:
- dspace-core: containing org.dspace.plugin and org.dspace.core
- dspace-legacy-storage: containing org.dspace.storage.rdbms and org.dspace.storage.bitstore
- dspace-model: containing org.dspace.content and org.dspace.browse (until the circular dependency on Browse can be removed)
- dspace-app: Applications and addon support found in org.dspace.apps
- dspace-cli: A refactored ScriptLauncher that uses Service Manager to get Commands.
Technical Approach
...
Changes to Maven Multimodules Build
dspace/trunk/pom.xml (http://scm.dspace.org/svn/repo/dspace/trunk/pom.xml)
Ceases to exist, we will move all projects that use dspace-parent to use dspace-
...
pom (http://scm.dspace.org/svn/repo/modules/dspace-pom/trunk/pom.xml) which is released separately from trunk.
trunk/dspace/pom.xml
Continues to fill its role as an assembly point for constructing a DSpace instance. Important changes are that the assembly is changed so that dependencies are not defined here and a separate "cli" project is created to hold dependencies that will be assembled into the DSpace lib directory. This allows a specialized location to add customizations to go specifically into the lib directory codebase. Upgrades to DSpace will require migrating your changes in dspace/pom.xml dependencies into the cli project instead.
Code Block |
---|
├── modules
│ ├── pom.xml
│ ├── cli
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── resources
|
trunk/dspace/modules/pom.xml
Will be defined as the place that dependencyManagement is customized for a specific DSpace instance. Dependency Management is then moved out of the scope of dspace-parent. This allows individual DSpace instances to mediate the versions of dependencies chosen for a specific deployment.
Code Block |
---|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.dspace</groupId>
<artifactId>modules</artifactId>
<version>1.8.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>DSpace Addon Modules</name>
<url>http://www.dspace.org</url>
<description>DSpace Addon Modules</description>
<parent>
<artifactId>dspace-pom</artifactId>
<groupId>org.dspace</groupId>
<version>8</version>
</parent>
<modules>
<module>cli</module>
<module>xmlui</module>
<module>lni</module>
<module>oai</module>
<module>jspui</module>
<module>sword</module>
<module>solr</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- DSpace core and endorsed Addons -->
<dependency>
<groupId>org.dspace</groupId>
<artifactId>dspace-api</artifactId>
<version>1.8.0-SNAPSHOT</version>
</dependency>
|
Possible Changes to DSpace Module versioning scheme
...
Module | Scheme | Previous Version | New Version |
---|---|---|---|
dspace | N.N | 1.7.0 | 11.10 |
dspace/modules | N.N | 1.7.0 | 11.10 |
dspace/modules/... | N.N | 1.7.0 | 11.10 |
dspace-api | M.M.M | 1.7.0 | 2.0.0 |
dspace-jspui | M.M.M | 1.7.0 | 2.0.0 |
dspace-jspui-api | M.M.M | 1.7.0 | 2.0.0 |
dspace-xxx-yyy | M.M.M | 1.7.0 | 2.0.0 |
|
|
|
|
...
- Push a patch for the prototype into the JIRA for DSpace and get feedback from the committers group on the refactorings.
Important Caveats in Maven Build
- Assembly and Dependency Management cannot currently occur in the same Maven module, we currently dealt with this by having dspace-parent do dependencyManagement and the dspace assembly project do the assembly. Approach needs to be retained in moving dependencyManagerment into the dspace/modules/pom.xml and continuing to reserve assembly as part of dspace/pom.xml.