2009-08-13 21 views
5

He intentado usar Maven para construir un proyecto. El proyecto funciona bien en algunas computadoras que probé, pero en una máquina, tengo un problema al azar.Dependencia desconocida Próximamente en Maven Build

Básicamente, maven está buscando una dependencia que no esté incluida en el archivo pom.xml o en el archivo settings.xml en absoluto.

He intentado mvn dependency: purge-local-repository pero todavía no sirvió; Todavía estoy atascado en mvn buscando una dependencia. No tengo ni idea de dónde está buscando.

Respuesta

12

Si ejecuta mvn dependency: tree en su proyecto verá dónde se está introduciendo la dependencia no deseada, puede excluir la dependencia.

Este es un ejemplo del resultado:

[INFO] [dependency:tree] 
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT 
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile 
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile 
[INFO]  \- velocity:velocity:jar:1.4:compile 

Para excluir una dependencia, que haría algo como esto:

<dependency> 
    <groupId>sample.ProjectA</groupId> 
    <artifactId>Project-A</artifactId> 
    <version>1.0</version> 
    <exclusions> 
    <exclusion> <!-- declare the exclusion here --> 
     <groupId>sample.ProjectB</groupId> 
     <artifactId>Project-B</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

Para más detalles sobre el plugin de dependencia ver el documentation.

Para obtener más información sobre exclusiones, consulte el guide.

Actualización: También puede usar el complemento m2eclipse para generar un árbol gráfico de las dependencias o como un gráfico. dependency tree screenshot http://www.sonatype.com/books/m2eclipse-book/reference/figs/web/eclipse_pom-editor-depend-tree-locate.png dependency graph screenshot http://www.sonatype.com/books/m2eclipse-book/reference/figs/web/eclipse_pom-editor-graph.png

0

dependencias Maven pueden tener dependencias transitivas (dependencias de dependencias), por lo que incluso si algo no se declara explícitamente en el POM, Maven todavía puede tener que ir a buscar.

Corriendo mvn dependency: tree debería ayudarlo a diagnosticar el problema, como Rich Seller describe; también podría ayudarle a ejecutarlo en las otras máquinas donde no tiene el problema y comparar el resultado.

purge-local-repository realmente no va a ayudar mucho en este sentido; todo lo que hace es eliminar artefactos de su repositorio local en caso de que uno de ellos esté dañado. Si maven está tratando de obtener una dependencia que no está en el repositorio local, realmente no será de mucha ayuda.