Hallo Zusammen
Ich bin auf ein merkwürdiges Maven2 Problem gestossen.
Folgendes:
Ich habe ein Mavne WAR Projekt. In diesem Projekt habe ich einige Apache Commons und Struts dependencies definiert. Wenn ich das "package" Target ausführe habe ich in meinem WAR einige Commons Jar's dopelt, in verschiedenen Versionen.
So sieht mein POM aus:
Um mal ein Beispiel zu nennen. In meinem Target WAR ist die Bibliothek commons-beanutils unter der Version 1.6.1 und 1.7 vorhanden.
Mit "mvn dependency:tree -Dverbose=true" bekam ich folgenden output:
Die Version 1.7 von commons-beanutils wird eigentlich korrekt ausgelassen, da die Version 1.6.1 höher im Tree definiert ist. Das sieht man auch wenn ich "mvn dependency:list" ausgebe.
Eigentlich kann Maven die Dependency konfilikte korrekt auflösen. Nur das WAR Plugin kopiert mir jedoch alle verfügbaren JAr's in das /WEB-INF/lib Verzeichnis.
Gibt es eine Möglichkeit dieses Problem zu beheben oder muss ich auf exlusions bei den Dependencies zurückgreiffen?
mfg
ueltschisa
Ich bin auf ein merkwürdiges Maven2 Problem gestossen.
Folgendes:
Ich habe ein Mavne WAR Projekt. In diesem Projekt habe ich einige Apache Commons und Struts dependencies definiert. Wenn ich das "package" Target ausführe habe ich in meinem WAR einige Commons Jar's dopelt, in verschiedenen Versionen.
So sieht mein POM aus:
Code:
<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>infplat</groupId>
<artifactId>infplat-web</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>infplat-web Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>pfstruts</groupId>
<artifactId>pfstruts-core</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>pfstruts</groupId>
<artifactId>pfstruts-web</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>aplat.ts</groupId>
<artifactId>AplatUtil</artifactId>
<version>2.11</version>
</dependency>
<dependency>
<groupId>struts</groupId>
<artifactId>struts</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>session</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.avalon.framework</groupId>
<artifactId>avalon-framework-impl</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>fop</groupId>
<artifactId>fop</artifactId>
<version>0.20.5</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>jenkov</groupId>
<artifactId>jenkov-prizetags</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>infplat</groupId>
<artifactId>infplat-server</artifactId>
<version>1.0-SNAPSHOT</version>
<type>ejb</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.bea.wls</groupId>
<artifactId>weblogic</artifactId>
<version>10.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>infplat-web</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Um mal ein Beispiel zu nennen. In meinem Target WAR ist die Bibliothek commons-beanutils unter der Version 1.6.1 und 1.7 vorhanden.
Mit "mvn dependency:tree -Dverbose=true" bekam ich folgenden output:
[INFO] [dependency:tree]
[INFO] infplat:infplat-web:war:1.0-SNAPSHOT
[INFO] +- log4j:log4j:jar:1.2.8:compile
[INFO] +- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] +- commons-lang:commons-lang:jar:2.0:compile
[INFO] +- commons-validator:commons-validator:jar:1.1.4:compile
[INFO] +- pfstrutsfstruts-core:jar:1.1.1:compile
[INFO] | +- skaringa:skaringa:jar:r1p8:compile
[INFO] | +- (log4j:log4j:jar:1.2.13:compile - omitted for conflict with 1.2.8)
[INFO] | +- (commons-lang:commons-lang:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] | +- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for duplicate)
[INFO] | +- commons-digester:commons-digester:jar:1.7:compile
[INFO] | | +- (commons-beanutils:commons-beanutils:jar:1.6:compile - omitted for conflict with 1.6.1)
[INFO] | | +- (commons-logging:commons-logging:jar:1.0:compile - omitted for conflict with 1.0.4)
[INFO] | | +- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 3.1)
[INFO] | | \- (xml-apis:xml-apis:jar:1.0.b2:compile - omitted for duplicate)
[INFO] | +- commons-beanutils:commons-beanutils:jar:1.6.1:compile
[INFO] | | +- (commons-logging:commons-logging:jar:1.0:compile - omitted for conflict with 1.0.4)
[INFO] | | \- (commons-collections:commons-collections:jar:2.0:compile - omitted for conflict with 2.1)
[INFO] | +- (commons-validator:commons-validator:jar:1.1.4:compile - omitted for duplicate)
[INFO] | \- commons-collections:commons-collections:jar:3.1:compile
[INFO] +- pfstrutsfstruts-web:jar:1.1.1:compile
[INFO] | +- (pfstrutsfstruts-core:jar:1.1.1:compile - omitted for duplicate)
[INFO] | +- (struts:struts:jar:1.2.8:compile - omitted for duplicate)
[INFO] | +- struts:struts-el:jar:1.2.8:compile
[INFO] | +- taglibs:standard:jar:1.0.6:compile
[INFO] | +- javax.servlet:jstl:jar:1.1.2:compile
[INFO] | +- (log4j:log4j:jar:1.2.13:compile - omitted for conflict with 1.2.8)
[INFO] | +- (commons-lang:commons-lang:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] | +- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for duplicate)
[INFO] | +- (commons-digester:commons-digester:jar:1.7:compile - omitted for duplicate)
[INFO] | +- (commons-beanutils:commons-beanutils:jar:1.6.1:compile - omitted for duplicate)
[INFO] | +- (commons-validator:commons-validator:jar:1.1.4:compile - omitted for duplicate)
[INFO] | \- (commons-collections:commons-collections:jar:3.1:compile - omitted for duplicate)
[INFO] +- aplat.ts:AplatUtil:jar:2.11:compile
[INFO] +- struts:struts:jar:1.2.8:compile
[INFO] | +- (commons-beanutils:commons-beanutils:jar:1.7.0:compile - omitted for conflict with 1.6.1)
[INFO] | +- (commons-digester:commons-digester:jar:1.6:compile - omitted for conflict with 1.7)
[INFO] | +- commons-fileupload:commons-fileupload:jar:1.0:compile
[INFO] | +- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for duplicate)
[INFO] | +- (commons-validator:commons-validator:jar:1.1.4:compile - omitted for duplicate)
[INFO] | +- ororo:jar:2.0.7:compile
[INFO] | +- antlr:antlr:jar:2.7.2:compile
[INFO] | \- xalan:xalan:jar:2.5.1:compile
[INFO] +- taglibs:session:jar:1.0.1:compile
[INFO] +- quartz:quartz:jar:1.5.2:compile
[INFO] | \- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for duplicate)
[INFO] +- org.apache.avalon.framework:avalon-framework-impl:jar:4.3.1:compile
[INFO] | \- org.apache.avalon.framework:avalon-framework-api:jar:4.3.1:compile
[INFO] +- fop:fop:jar:0.20.5:compile
[INFO] | +- batik:batik-1.5-fop:jar:0.20-5:compile
[INFO] | +- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] | +- (xalan:xalan:jar:2.4.1:compile - omitted for conflict with 2.5.1)
[INFO] | +- xerces:xercesImpl:jar:2.2.1:compile
[INFO] | \- avalon-framework:avalon-framework:jar:4.0:compile
[INFO] +- net.sourceforge.jexcelapi:jxl:jar:2.6.3:compile
[INFO] | \- (log4j:log4j:jar:1.2.14:compile - omitted for conflict with 1.2.8)
[INFO] +- jenkov:jenkov-prizetags:jar:3.4.0:compile
[INFO] +- com.lowagie:itext:jar:2.0.8:compile
[INFO] | +- bouncycastle:bcmail-jdk14:jar:138:compile
[INFO] | \- bouncycastle:bcprov-jdk14:jar:138:compile
[INFO] +- infplat:infplat-server:ejb:1.0-SNAPSHOTrovided
[INFO] | +- (log4j:log4j:jar:1.2.8rovided - omitted for duplicate)
[INFO] | +- (commons-logging:commons-logging:jar:1.0.4rovided - omitted for duplicate)
[INFO] | +- (quartz:quartz:jar:1.5.2rovided - omitted for duplicate)
[INFO] | +- org.hibernate:hibernate:jar:3.1rc2rovided
[INFO] | | +- asm:asm:jar:1.5.3rovided
[INFO] | | +- cglib:cglib:jar:2.1_2rovided
[INFO] | | | \- (asm:asm:jar:1.5.3rovided - omitted for duplicate)
[INFO] | | +- (commons-collections:commons-collections:jar:2.1.1rovided - omitted for conflict with 3.1)
[INFO] | | +- (commons-logging:commons-logging:jar:1.0.4rovided - omitted for duplicate)
[INFO] | | +- dom4j:dom4j:jar:1.6.1rovided
[INFO] | | +- ehcache:ehcache:jar:1.1rovided
[INFO] | | | \- (commons-logging:commons-logging:jar:1.0.4rovided - omitted for duplicate)
[INFO] | | +- org.hibernate:antlr:jar:2.7.5H3rovided
[INFO] | | \- javax.transaction:jta:jar:1.0.1Brovided
[INFO] | +- (struts:struts:jar:1.2.8rovided - omitted for duplicate)
[INFO] | +- aplat.ts:AplatAlarming:jar:2.10rovided
[INFO] | \- servicedesk:servicedesk:jar:1.0rovided
[INFO] +- javax.servlet:servlet-api:jar:2.5rovided
[INFO] +- javax.servlet.jsp:jsp-api:jar:2.1rovided
[INFO] +- javax.ejb:ejb:jar:2.0rovided
[INFO] \- com.bea.wls:weblogic:jar:10.3rovided
Die Version 1.7 von commons-beanutils wird eigentlich korrekt ausgelassen, da die Version 1.6.1 höher im Tree definiert ist. Das sieht man auch wenn ich "mvn dependency:list" ausgebe.
[INFO] [dependency:list]
[INFO]
[INFO] The following files have been resolved:
[INFO] antlr:antlr:jar:2.7.2:compile
[INFO] aplat.ts:AplatAlarming:jar:2.10rovided
[INFO] aplat.ts:AplatUtil:jar:2.11:compile
[INFO] asm:asm:jar:1.5.3rovided
[INFO] avalon-framework:avalon-framework:jar:4.0:compile
[INFO] batik:batik-1.5-fop:jar:0.20-5:compile
[INFO] bouncycastle:bcmail-jdk14:jar:138:compile
[INFO] bouncycastle:bcprov-jdk14:jar:138:compile
[INFO] cglib:cglib:jar:2.1_2rovided
[INFO] com.bea.wls:weblogic:jar:10.3rovided
[INFO] com.lowagie:itext:jar:2.0.8:compile
[INFO] commons-beanutils:commons-beanutils:jar:1.6.1:compile
[INFO] commons-collections:commons-collections:jar:3.1:compile
[INFO] commons-digester:commons-digester:jar:1.7:compile
[INFO] commons-fileupload:commons-fileupload:jar:1.0:compile
[INFO] commons-lang:commons-lang:jar:2.0:compile
[INFO] commons-logging:commons-logging:jar:1.0.4:compile
[INFO] commons-validator:commons-validator:jar:1.1.4:compile
[INFO] dom4j:dom4j:jar:1.6.1rovided
[INFO] ehcache:ehcache:jar:1.1rovided
[INFO] fop:fop:jar:0.20.5:compile
[INFO] infplat:infplat-server:ejb:1.0-SNAPSHOTrovided
[INFO] javax.ejb:ejb:jar:2.0rovided
[INFO] javax.servlet:jstl:jar:1.1.2:compile
[INFO] javax.servlet:servlet-api:jar:2.5rovided
[INFO] javax.servlet.jsp:jsp-api:jar:2.1rovided
[INFO] javax.transaction:jta:jar:1.0.1Brovided
[INFO] jenkov:jenkov-prizetags:jar:3.4.0:compile
[INFO] log4j:log4j:jar:1.2.8:compile
[INFO] net.sourceforge.jexcelapi:jxl:jar:2.6.3:compile
[INFO] org.apache.avalon.framework:avalon-framework-api:jar:4.3.1:compile
[INFO] org.apache.avalon.framework:avalon-framework-impl:jar:4.3.1:compile
[INFO] org.hibernate:antlr:jar:2.7.5H3rovided
[INFO] org.hibernate:hibernate:jar:3.1rc2rovided
[INFO] ororo:jar:2.0.7:compile
[INFO] pfstrutsfstruts-core:jar:1.1.1:compile
[INFO] pfstrutsfstruts-web:jar:1.1.1:compile
[INFO] quartz:quartz:jar:1.5.2:compile
[INFO] servicedesk:servicedesk:jar:1.0rovided
[INFO] skaringa:skaringa:jar:r1p8:compile
[INFO] struts:struts:jar:1.2.8:compile
[INFO] struts:struts-el:jar:1.2.8:compile
[INFO] taglibs:session:jar:1.0.1:compile
[INFO] taglibs:standard:jar:1.0.6:compile
[INFO] xalan:xalan:jar:2.5.1:compile
[INFO] xerces:xercesImpl:jar:2.2.1:compile
[INFO] xml-apis:xml-apis:jar:1.0.b2:compile
Eigentlich kann Maven die Dependency konfilikte korrekt auflösen. Nur das WAR Plugin kopiert mir jedoch alle verfügbaren JAr's in das /WEB-INF/lib Verzeichnis.
Gibt es eine Möglichkeit dieses Problem zu beheben oder muss ich auf exlusions bei den Dependencies zurückgreiffen?
mfg
ueltschisa