2011-10-31 16 views
26

Estoy trabajando en grandes proyectos con muchos archivos pom.xml y necesito especificar todas las bibliotecas que uso. Esto significa que necesito leer archivos pom.xml recursivamente y obtener groupId, artifactId, scope y version. Revisé mvn dependency: tree pero no puedo encontrar la manera de imprimirlo en un archivo en un formato legible. Vi appendOutput pero no vi ningún ejemplo sobre cómo usarlo en cmd. Vi algunas soluciones hechas en Linux pero solo tengo acceso a Windows XP.¿Cómo hacer que las dependencias de Maven se impriman en un archivo en un formato legible?

Respuesta

53

Esto puede (al menos ahora) hacerse con opciones de línea de comandos para la dependencia: árbol de complemento.

Probar:

mvn dependency:tree -Doutput=/path/to/file 

Referencia: Maven Dependency Plugin Page

Sólo se preguntó acerca de formato "legible", pero también se puede pasar el parámetro -DoutputType con varias opciones. También tenga en cuenta que la versión que tengo instalado, me sale el siguiente mensaje de advertencia:

[WARNING] The parameter output is deprecated. Use outputFile instead. 

lo tanto, considerar tratando con -DoutputFile =/ruta/a/archivo

también, no he podido conseguir el - DoutputType paramater para darme cualquier cosa que no sea el texto predeterminado, pero no tuve la oportunidad de jugar con él. YMMV.

+1

-Dmdep.outputFile = – AndyS

+0

-Dmdep.outputFile =/ruta/a/archivo.txt funcionó, todas las demás opciones no – sloven

0

Siempre se puede instalar MinGW and MSYS y luego usar los ejemplos que utilizan Linux en Windows dependency:tree

0

Quizás effective-pom (junto con algunos comandos de Linux para guardar el archivo) puede ser suficiente para sus necesidades.

3

Añadiendo el plugin

<plugin> 
    <groupId>org.apache.servicemix.tooling</groupId> 
    <artifactId>depends-maven-plugin</artifactId> 
</plugin> 

produce un archivo classes/META-INF/maven/dependencies.properties con el proyecto de dependencias fácilmente analizable.

Ejemplo de la salida producida:

# Project dependencies generated by the Apache ServiceMix Maven Plugin 
# Generated at: Mon Oct 10 17:43:00 CEST 2011 

groupId = my.group.name 
artifactId = my.artifact.name 
version = 0.0.1-SNAPSHOT 
my.group.name/my.artifact.name/version = 0.0.1-SNAPSHOT 

# dependencies 

junit/junit/version = 4.8 
junit/junit/type = jar 
junit/junit/scope = test 

org.easymock/easymock/version = 2.4 
org.easymock/easymock/type = jar 
org.easymock/easymock/scope = test 
4

en GNU/Linux que acaba de hacer mvn dependency:tree > myFile. Sin embargo, si está restringido solo a Windows, entonces buscaría la sintaxis de Windows para transmitir el resultado de un comando.

De acuerdo con this site (solo un top-results de Google) parece que la consola de Windows también usa el signo > para dirigir el flujo de salida a un archivo. Entonces, ¿te importaría probar esto?

+3

La orden es la misma para Windows. –

+0

> es de POSIX. En Windows funciona bien – kingoleg

1

Si tiene varios módulos en el mismo repositorio/proyecto y desea las dependencias de todos los módulos en un archivo, para poder modificar el b/n de una construcción y otra para ver si algo cambió en alguna parte, puede do

$project_dir> mvn dependency:tree -DoutputFile=<absolute_path_to_file> -DappendOutput=true 

por ejemplo

$project_dir> mvn dependency:tree -DoutputFile=`pwd`/mvn_dependency_tree.txt -DappendOutput=true 

otras opciones disponibles en https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

Cuestiones relacionadas