2011-06-30 24 views
7

Me gusta esto org.carrot2 depende de commons-httpclient 3.1 Entonces, ¿cómo puedo cambiar esto commons-httpclient 3.1 a HttpClient 4.1.1. Estoy trabajando en eclipse. Como quiero eliminar commons-httpclient:3.1 de los que dependen de este archivo jar y quiero reemplazar con HttpClient 4.1.1.Anular dependencias de jar de terceros en maven

Entonces, lo que estaba tratando de hacer ... Hice doble clic en este org.carrot2 desde la carpeta de jerarquía de dependencias y fui a su archivo pom.xml y estaba tratando de cambiar commons-httpclient 3.1 a httpclient 4.1.1 pero no me permite cambiar como retroceder y borrar no está trabajando en eso ..

Cualquier sugerencia será apreciada ..

Respuesta

13

en primer lugar asegúrese de que el mencionado artefacto puede trabajar correctamente con el HttpClient 4.1.1.

podemos definir "la exclusión" para cada dependencia como se menciona en http://maven.apache.org/pom.html#Exclusions

Exclusiones explícitamente decirle Maven que usted no desea incluir la proyecto especificado que es una dependencia de esta dependencia (en otras palabras, su dependencia transitiva)

exclusiones: exclusiones contienen uno o más elementos de exclusión, cada que contiene un ID de grupo y un identificador de arte que denota una dependencia para excluir. A diferencia de opcional, que puede o no instalarse y utilizarse, las exclusiones se eliminan activamente del árbol de dependencia .

<dependencies> 
    <dependency> 
    <groupId>the_group</groupId> 
    <artifactId>the_artifact</artifactId> 
    <version>the_version</version> 
    <exclusions> 
     <exclusion> 
     <groupId>the_apache_group</groupId> 
     <artifactId>the_http_client_artifact</artifactId> 
     </exclusion> 
    </exclusions> 
    </dependency> 

    <dependency> 
    <groupId>the_apache_group</groupId> 
    <artifactId>the_http_client_artifact</artifactId> 
    <version>4.1.1</version> 
    </dependency> 
    ... 
</dependencies> 

espero que esto puede ayudar a cumplir el requisito.

Saludos,

Charlee Ch.

+0

Chitsuk, gracias por replying..' org.apache.solr Solr-SolrJ 3.2.0 Commons-httpclient Commons-httpclient org.apache .httpcomponents httpclient 4.1.1 'así que en esto estoy eliminando commonshttpclient de httpclient4.1.1 como una dependencia de org.apache.solr r Ocho? – ferhan

+0

Sí, tienes razón. El HttpClient 4.1.1 se usará en su lugar. –

+0

Chitsuk, y ya he dependencias etiqueta en mi pom.xml así que debería copiar sólo que esta ' org.apache.solr Solr-SolrJ 3.2.0 Commons-httpclient Commons-httpclient org.apache.httpcomponents httpclient 4.1.1 '¿verdad? – ferhan

2

Añadir una dependencia de HttpClient 4.1.1 a su POM. Maven reconocerá el conflicto (suponiendo que groupId y artifactId de httpclient no han cambiado) entre su dependencia directa y la dependencia indirecta, y use la versión más nueva. (no porque sea el más nuevo, sino porque es el más directo)

Y tiene sentido que no pueda editar los archivos pom de otras personas; después de todo, quiere que zanahoria use el cliente HTTP más nuevo solo en su programa, no en todos los programas que utilizan la zanahoria ...

+0

@meriton, cómo puedo agregar dependencias en HttpClient 4.1.1 .. Como quiero 'org.carrot2' depende de' HttpClient 4.1.1' no en 'commons-httpclient 3.1'. – ferhan

+0

No importa si tu pom declara la dependencia en httpclient o en carrots, todo termina en la misma ruta de clases. Y confío en que sepa cómo agregar una dependencia, ya que zanahoria terminó en su jerarquía de dependencia de alguna manera ... – meriton

+1

@meriton, m trabajando en algunos proyectos más, abandonó este proyecto, ya que es .. así que por eso tengo que completar este .. Y agregó estas ' \t \t org.apache.httpcomponents \t \t httpclient \t \t 4.1.1 \t \t 'en mi pom.xml sino los que están en función de' Commons-httpclient 3.1' siguen dependiendo de esta .. – ferhan

0

Si algo depende de HttpClient 3.x no funcionará para sustituir 4.x ya que son API completamente diferentes. Obtendrá errores de tiempo de ejecución cuando intente acceder al código que se basa en 3.x.

+0

espero que me recuerde ... De acuerdo con sus sugerencias, comencé a trabajar con HttpClient 4.1.1 y recibo un nuevo error. [link] (http://stackoverflow.com/questions/6551774/http-1-1-401-authorization-required-with-httpclient-4-1-1) – ferhan

Cuestiones relacionadas