Maven: Ldap Plugin

Ich habe ein Maven-Plugin geschrieben, welches nach einem

erfolgreichen Build im Ldap einen Eintrag für das generierte Artefakt anlegt bzw. aktualisiert und die aktuelle Version als Attribut serialNumber einträgt. Dabei bildet die groupId die Hierarchie im Ldap ab. Getestet wurde das Plugin mit dem Apache DS 1.5.5.

technische Details:

  • Maven 3.0.x
  • Java 1.6
  • Apache DS 1.5.x

Die Metadaten des Maven-Projekts werden aus dem Objekt org.apache.maven.project.MavenProject extrahiert.

Objektklassen für Artefakte:

  • extensibleObject
  • organizationalUnit
  • top
  • uidObject
  • labeledURIObject

Objektklassen für Gruppen:

  • groupOfUniqueNames
  • top

Das Maven-Goal für das Eintragen in den Ldap lautet "ldap". Die Konfiguration des Plugins erfolgt natürlich über die pom.xml des jeweilgen Projektes:

...
<plugins>
 <plugin>
  <groupId>de.ronnyfriedland</groupId>
  <artifactId>maven-ldap-artifact-plugin</artifactId>
  <version>1.2</version>
  <executions>
   <execution>
    <id>ldap</id>
    <phase>install</phase>
    <goals>
     <goal>ldap</goal>
    </goals>
    <configuration>
     <host>localhost</host>
     <port>10389</port>
     <user>uid=admin,ou=system</user>
     <password>secret</password>
     <rootdn>ou=repository,ou=maven</rootdn>
     <ssl>false</ssl>
    </configuration>
   </execution>
  </executions>
 </plugin>
</plugins>
...

Sofern die Kommunikation über SSL erfolgen soll, muss der Parameter ssl auf true konfiguriert werden. In diesem Fall sind die folgenden weiteren Parameter in der Konfiguration erforderlich:

  • keystore
  • keystorePassword
  • truststore
  • truststorePassword

Muss die Kommunikation über einen Proxy erfolgen, kann dieser ebenfalls über die Pluginparameter konfiguriert werden:

  • proxyHost
  • proxyPort

Das nachfolgende Klassendiagramm zeigt die Implementierungsdetails des Plugins. Der Einstiegspunkt für das Plugin ist die Klassen de.ronnyfriedland.maven.plugin.LdapArtifactMojo. Die Ldap/JNDI Details sind in der Utilityklasse de.ronnyfriedland.maven.plugin.util.LdapUtils gekapselt.

Das gesamte Beispiel gibt es hier als Download.

image0