Dienstag, April 02, 2013

org.codehaus.plexus.archiver.jar.Manifest.merge

In meiner Springsource Eclipse Variante erhalte ich momentan in meinen Projekten die folgende Fehlermeldung:
org.codehaus.plexus.archiver.jar.Manifest.merge(org.codehaus.plexus.archiver.jar.Manifest)
... Maven Configuration Problem
Problematisch ist die folgende Konfiguration in meiner pom.xml:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>de.awtools.basic.App</mainClass>
        <packageName>de.awtools.basic</packageName>
        <!-- options -->
        <addClasspath>true</addClasspath>
      </manifest>
      <manifestEntries>
        ...
      </manifestEntries>
      <!-- HIER IST DAS PROBLEM: Maven jar plugin and Eclipse -->
      <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
    </archive>
  </configuration>
</plugin>
An sich ist hier nichts außergewöhnliches deklariert. Problematisch ist das maven-jar-plugin in der Version 2.4. Das Plugin benutzt eine Funktion aus einem anderen Modul (org.codehaus.plexus.archiver.jar.Manifest), welches die MERGE Methode nicht mehr anbietet - zumindest nicht mehr öffentlich (siehe Github und m2eclipse). So kann das maven-jar-plugin die Informationen aus der MANIFEST.MF Datei nicht mit den Daten aus der POM Konfiguration miteinander mergen. Eine Lösung wäre die Verwendung des maven-jar-plugins in der Version 2.3.2. Ich habe für mich entschieden, den Eintrag im POM mit einem Hinweis erst einmal zu deaktivieren und alle relevanten MANIFEST.MF betreffenden Informationen im POM anzulegen. Damit würde dann der MERGE Vorgang entfallen und alles wäre fein, bis mit Version 2.5.x dieses leidige Problem hoffentlich behoben ist. UPDATE (28.01.2014): Das alte Problem hat mich heute wieder eingeholt. Dabei ist mir aufgefallen, dass das Plugin immer noch in der Version 2.4. vorliegt. Da der oben beschriebene Fehler nicht ganz unerheblich ist, habe ich noch einmal nachgeforscht und bin auf den folgenden Link gestossen: http://maven.apache.org (Examples) Was soviel bedeutete, dass ein Merge der beiden Konfigurationen nicht vorgesehen ist.

AssertJ und java.util.List

AssertJ hat eine praktische Möglichkeit, Listen in JUnit Tests abzuprüfen. Insbesondere, wenn in der Liste komplexe Objekte abgelegt sind, s...