2010-09-14 48 views
5

Maven coloca tanto axis-1.3.jar como axis-1.4.jar en WEB-INF/lib de mi guerra. ¿Alguien puede explicar cómo decir que use solo axis-1.4.jar?maven hace la guerra con dos versiones del mismo contenedor

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

[dependencia: Árbol {ejecución: 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 es 2.2.1

Respuesta

6

puede excluir ciertas bibliotecas dependientes en sus dependencias:

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

Entonces maven omitirá esta dependencia.

Debe asegurarse de que Jasper puede encontrar las clases necesarias en la biblioteca que proporciona.

+0

1 para la solución real –

4

Esto aparece todo el tiempo en el trabajo y el 90% del tiempo es debido a que alguien (or Eclipse's WTP) pone una copia del jar en WEB-INF/lib y luego lo controla en el control de la versión.

Es posible que desee comprobar eso.

+0

esta fue la respuesta para mí ! ¡Gracias! –

+0

¡También la respuesta correcta para mí! –

8

En teoría, Maven debería manejar la convergencia de la versión de un artefacto presente en dependencias o dependencias transitivas. El problema aquí es que axis-1.4.jar y axis-1.3.jarno tienen el mismo groupId (org.apache.axis contra axis) por lo que Maven los ve como artefactos distintos e incluye ambos.

Si no desea conseguir axis-1.3.jar pero sólo axis-1.4.jar, que tendrá que excluir a los no deseados de la dependencia jasperserver-ireport-plugin explícitamente usando 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> 

no puedo decir si va a funcionar con jasperserver-ireport-pluginaxis-1.4.jar embargo.

0

fwiw he estado golpeando experto durante unas horas porque mi guerra tuvo otras versiones del mismo frasco en que - siempre tenga cuidado cuando se hace una eliminación recursiva, pero esto es lo que sacó en el extremo

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

algo estaba loco en mi repo, pero lo que fuera que volvía hasta que hice la actualización de la fuerza -U

Espero que esto ayude a alguien

+0

no funcionó para mí –

Cuestiones relacionadas