2010-09-14 15 views
5

Maven umieszcza zarówno axis-1.3.jar jak i axis-1.4.jar na WEB-INF/lib mojej wojny. Czy ktoś może wyjaśnić, jak powiedzieć, aby używać tylko osi-1.4.jar?maven robi wojnę z dwiema wersjami tego samego słoiczka

<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> 

[zależność: drzewo {wykonanie: 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 jest 2.2.1

Odpowiedz

6

można wykluczyć pewnych bibliotek zależnych w swoich zależnościach:

<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> 

Następnie maven pominie tę zależność.

Musisz być pewien, że Jasper może znaleźć potrzebne zajęcia w bibliotece, którą udostępniasz.

+0

+1 do rzeczywistego rozwiązania –

4

To pojawia się w pracy przez cały czas i 90% czasu jest to spowodowane przez kogoś (or Eclipse's WTP) umieszczenie kopii słoika w WEB-INF/lib, a następnie sprawdzenie go w kontroli wersji.

Możesz to sprawdzić.

+0

to była odpowiedź dla mnie ! Dzięki! –

+0

Również właściwa odpowiedź dla mnie! –

8

Teoretycznie Maven powinien obsługiwać zbieżność wersji artefaktu występującego w zależnościach lub przejściowych zależnościach. Problem polega na tym, że i nie mają tego samego wyglądu, więc Maven widzi je jako odrębne artefakty i obejmuje je oba.

Jeśli nie chcesz dostać axis-1.3.jar ale tylko axis-1.4.jar, musisz wykluczyć niepożądane z uzależnienia jasperserver-ireport-plugin wyraźnie stosując 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> 

nie mogę powiedzieć, czy będzie działać z jasperserver-ireport-pluginaxis-1.4.jar though.

0

FWIW Byłem walić Maven na kilka godzin, bo moja wojna miała inne wersje tego samego słoika w nim - zawsze należy zachować ostrożność podczas prowadzenia rekurencyjny usunąć, ale to jest to, co zdaje się ją w końcu

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

coś haju w moim repo ale cokolwiek to było, że ciągle wracamy aż zrobiłem aktualizację siły -U

Hope this helps ktoś

+0

nie działa dla mnie –

Powiązane problemy