2010-09-14 16 views
5

Maven met à la fois axis-1.3.jar et axis-1.4.jar à WEB-INF/lib de ma guerre. Quelqu'un peut-il expliquer comment lui dire d'utiliser uniquement axis-1.4.jar?maven fait la guerre avec deux versions du même pot

<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"> 
    <parent> 
     <groupId>dummy</groupId> 
     <artifactId>test-war</artifactId> 
     <version>0.1</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>dummy</groupId> 
    <artifactId>war-part2</artifactId> 
    <name>war-part1</name> 
    <version>0.1</version> 
    <packaging>war</packaging> 

    <dependencies> 
    <dependency> 
     <groupId>org.apache.axis</groupId> 
     <artifactId>axis</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>com.jaspersoft.jasperserver</groupId> 
     <artifactId>jasperserver-ireport-plugin</artifactId> 
     <version>2.0.1</version> 
    </dependency> 
    </dependencies> 
</project> 

[dépendances: arbre {exécution: default-cli}]

+- org.apache.axis:axis:jar:1.4:compile 
\- com.jaspersoft.jasperserver:jasperserver-ireport-plugin:jar:2.0.1:compile 
    +- javax.activation:activation:jar:1.1:compile 
    +- javax.mail:mail:jar:1.4:compile 
    +- log4j:log4j:jar:1.2.12:compile 
    \- com.jaspersoft.jasperserver:jasperserver-common-ws:jar:2.0.1:compile 
     +- xerces:xercesImpl:jar:2.8.1:compile 
     | \- xml-apis:xml-apis:jar:1.3.03:compile 
     \- axis:axis:jar:1.3:compile 
     +- axis:axis-jaxrpc:jar:1.3:compile 
     +- axis:axis-saaj:jar:1.3:compile 
     +- wsdl4j:wsdl4j:jar:1.5.1:compile 
     +- commons-logging:commons-logging:jar:1.0.4:compile 
     \- commons-discovery:commons-discovery:jar:0.2:compile 

Maven est 2.2.1

Répondre

6

Vous pouvez exclure certaines bibliothèques dépendantes dans vos dépendances:

<dependency> 
    <groupId>com.jaspersoft.jasperserver</groupId> 
    <artifactId>jasperserver-ireport-plugin</artifactId> 
    <version>2.0.1</version> 
    <exclusions> 
    <exclusion> 
     <groupId>axis</groupId> 
     <artifactId>axis</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

Ensuite, maven ignorera cette dépendance.

Vous devez être sûr que Jasper peut trouver les classes nécessaires dans la bibliothèque que vous fournissez.

+0

+1 pour la solution réelle –

4

Cela arrive au travail tout le temps et 90% du temps, il est dû à quelqu'un (or Eclipse's WTP) mettant une copie du pot dans WEB-INF/lib, puis en vérifiant dans le contrôle de version.

Vous voudrez peut-être vérifier cela.

+0

ce fut la réponse pour moi ! Merci! –

+0

Aussi la bonne réponse pour moi! –

8

En théorie, Maven devrait gérer la convergence de la version d'un artefact présent dans les dépendances ou les dépendances transitives. Le problème ici est que axis-1.4.jar et axis-1.3.jarn'ont pas le même groupId (org.apache.axis vs axis) donc Maven les voir comme artefacts distincts et les inclure tous les deux.

Si vous ne voulez pas obtenir axis-1.3.jar mais seulement axis-1.4.jar, vous devrez exclure les indésirables de la dépendance jasperserver-ireport-plugin explicitement à l'aide d'un exclusion:

<dependency> 
    <groupId>com.jaspersoft.jasperserver</groupId> 
    <artifactId>jasperserver-ireport-plugin</artifactId> 
    <version>2.0.1</version> 
    <exclusions> 
    <exclusion> 
     <groupId>axis</groupId> 
     <artifactId>axis</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

Ne peut pas dire si jasperserver-ireport-plugin travaillera avec axis-1.4.jar cependant.

0

FWIW j'ai été frapper à maven pendant quelques heures parce que ma guerre avait d'autres versions du même pot en elle - toujours faire preuve de prudence lorsque vous faites supprimer une récursive, mais c'est ce qui parvient en fin

rm -fR ~/.m2/repository 
mvn -U clean package 

quelque chose était farfelue dans mon repo, mais quoi qu'il en soit, il n'a cessé de revenir jusqu'à ce que je l'ai fait la mise à jour de la force -U

Hope this helps quelqu'un

+0

ne fonctionnait pas pour moi –