Vor einiger Zeit hatte ich über einen Fehler beim Einbinden von log4j in der Version 1.2.15 berichtet und als Lösung die Version 1.2.14 angepriesen. Natürlich ist das auf Dauer keine echte Lösung…daher hier nochmal etwas ausführlicher zwei Lösungsansätze, welche diesen Bug  der unnötigen Abhängigkeiten lösen.

Als erstes schaut man sich die Abhängigkeiten von log4j  an:

  • com.sun.jmx jmxri 1.2.1
  • com.sun.jdmk jmxtools 1.2.1
  • javax.jms jms 1.1
  • javax.mail mail 1.4

Leider sind diese aufgrund von Lizenzbeschränkungen in keinem Repository zu finden. Nun gibt es zwei Möglichkeiten. Da diese Abhängigkeiten nicht zwingend gebraucht werden, kann man diese einfach in der pom.xml ausschließen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<dependency>
    <groupid>log4j</groupid>
    <artifactid>log4j</artifactid>
    <version>1.2.15</version>
    <type>jar</type>
    <scope>compile</scope>
    <exclusions>
        <exclusion>
            <groupid>com.sun.jmx</groupid>
            <artifactid>jmxri</artifactid>
        </exclusion>
        <exclusion>
            <groupid>com.sun.jdmk</groupid>
            <artifactid>jmxtools</artifactid>
        </exclusion>
        <exclusion>
            <groupid>javax.jms</groupid>
            <artifactid>jms</artifactid>
        </exclusion>
    </exclusions>
</dependency>

Wahlweise lädt man diese von Sun herunter  (“JMX 1.2.1 Reference Implementation”) und deployed diese in ein lokales Repository. Dazu benennt man diese Dateien von jmxtools.jar in jmxtools-1.2.1.jar und jmxri.jar in jmxri-1.2.1.jar um und deployed diese lokal:

1
2
mvn install:install-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar -Dfile=jmxtools-1.2.1.jar
mvn install:install-file -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar -Dfile=jmxri-1.2.1.jar

Gleiches kann man natürlich auch mit JMS  1.1 machen.

Wahlweise kann man natürlich für diese Abhängigkeiten eigene zentrale Repositories wie Nexus nutzen.