Maven BOM im jadice server

Gültig ab jadice server 5.8.1.1

Dieser Artikel beschreibt, wie man in einem jadice server Client die Pflege der Abhängigkeiten zu Server Bibliotheken verbessern kann.

Import von Dependency Versionen über eine BOM

Mit dem Release 5.8.1.1 verfügt der jadice server über das neue Modul jadice-server-bom, welches die Pflege von Abhängigkeiten des jadice server vereinfacht.
Über den Import der BOM (Bill of Materials) werden die Versionen der zugehörigen Abhängigkeiten mitgebracht und müssen nicht mehr getrennt gepflegt werden.


Um eine Auflistung aller Abhängigkeiten mit den jeweiligen Versionen zu bekommen, können sie die POM-Datei des Moduls jadice-server-bom herunterladen und dann folgenden Befehl ausführen:

Generierung der effective-pom
mvn org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom -Dverbose=true -Doutput=effective-pom.xml --file=<heruntergeladene jadice-server-bom pom>

Im selben Verzeichnis wird die Datei effective-pom.xml erzeugt. Im Abschnitt <dependencyManagement> sind alle Versionen von Abhängigkeiten aufgelistet, die über die Einbindung der jadice server BOM importiert werden.

Beispiel : Einbindung der jadice server BOM in ein Maven Projekt

Für die gewünschte jadice server Version legen wir eine Maven Property an, damit wir sie nur an einer Stelle pflegen müssen.

pom.xml - Versionen
<properties>
	<!-- General project settings -->
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<maven.compiler.source>1.8</maven.compiler.source>
	<maven.compiler.target>1.8</maven.compiler.target>

	<!-- levigo dependencies -->
	<jadice.server.version>5.8.1.1</jadice.server.version>
</properties>

Im DependencyManagement-Block importieren wir die jadice server BOM. Dadurch erhalten wir die Versionen aller zugehörigen Dependencies und müssen diese nicht separat pflegen.

pom.xml - dependency management
<dependencyManagement>
    <dependencies>
        <!-- Import the jadice server bill of material. jadice server dependency
            versions will be managed via this BOM. -->
        <dependency>
	      <groupId>com.levigo.jadice.server</groupId>
      	  <artifactId>jadice-server-bom</artifactId>
      	  <version>${jadice.server.version}</version>
     	  <scope>import</scope>
      	  <type>pom</type>
       	</dependency>
    </dependencies>
</dependencyManagement>

Anschließend definieren wir die benötigten Abhängigkeiten für das Projekt. Dabei müssen wir keine Versionen angeben, da diese aus der BOM ermittelt werden:

pom.xml - dependencies
<dependencies>
    <dependency>
      <groupId>com.levigo.jadice.server</groupId>
      <artifactId>base-nodes-client</artifactId>
    </dependency>
    <dependency>
      <groupId>com.levigo.jadice.server</groupId>
      <artifactId>jms-transport-shared</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
    </dependency>
</dependencies>