2011-01-04 12 views
14

Estamos utilizando Maven 3 con IntelliJ para nuestro IDE. Después de una compilación obtenemos un montón de material de la primavera 2.0 incluido en las bibliotecas externas. Si reviso las dependencias de Maven Projects en Intellij, no veo a nadie con una dependencia en la primavera 2.0, así que sospecho que depende de ello de qué dependemos.¿Cómo saber por qué un frasco fue incluido por Maven?

Mi pregunta es ¿cómo puedo rastrear esto? Intenté hacer un mvn dependency:tree -Dverbose -Dincludes=spring-aop e incluso -Dincludes=spring, pero no obtuve ningún resultado cuando se ejecutó desde el directorio raíz o un submódulo que sé que está usando Spring.

Respuesta

12

Parece que el patrón pasado a -Dincludes es incorrecto.

De la documentación de Maven Dependency Plugin, la sintaxis de-Dincludes se define por StrictPatternIncludesArtifactFilter. Desde el javadoc de AbstractStrictPatternArtifactFilter de la que esta es una subclase,

La sintaxis patrón artefacto es de la formulario:

[groupId]:[artifactId]:[type]:[version]

Donde cada segmento del modelo es opcional y apoya plena y comodines parciales * . Un segmento de patrón vacío se trata como un comodín implícito.

Por ejemplo, org.apache.* coincidiría con todos los artefactos cuyo grupo Identificación comenzó con org.apache., y se compararán todos los :::*-SNAPSHOT instantánea artefactos.

Tal vez debería funcionar sin mvn dependency:tree-Dincludes y ver si se muestra el muelle de 2.0 dependencia relacionados. Alternativamente, especifique el patrón apropiado para -Dincludes.

9

El formato que está buscando es incorrecto. Prueba esto:

mvn dependency:tree -Dverbose -Dincludes=:spring*:: 

(búsqueda de cualquier artefacto con un groupId que comienza con la primavera)

O esto:

mvn dependency:tree -Dverbose -Dincludes=org.springframework 

(búsqueda de cualquier artefacto con org.springframework artifactId)

+0

He intentado con el comando anterior, para entender por qué se incluye un jar específico. Sin embargo, el comando maven anterior se está ejecutando y diciendo que la construcción es un éxito, pero no hay información sobre la dependencia. – Mahiz

3

¿Por qué no utilizar intellij y arreglarlo fácilmente? Abra su pom.xml, haga clic con el botón derecho (invoque el menú contextual) y elija UML> mostrar dependencias (suponiendo que tenga habilitado el complemento UML). Idea marcará todas las dependencias duplicadas y puede usar ALT + Enter combo para excluir dependencias. @ver también: http://blogs.jetbrains.com/idea/2010/05/maven-dependencies-diagram/

Cuestiones relacionadas