2010-11-03 13 views
43

Cómo generar un gráfico de la dependencia entre todos los módulos de un proyecto Maven (excluyendo bibliotecas de terceros como JUnit, SLF4J, etc.)? No pude encontrar una manera de incluir todos los módulos en un gráfico usando m2eclipse. Gracias.¿Cómo generar un gráfico de la dependencia entre todos los módulos de un proyecto Maven?

+2

En IntelliJ, puede obtener una vista jerárquica de las dependencias haciendo clic derecho en su pom.xml superior y seleccionando ** Analizar ** -> ** Analizar dependencias de módulos **. Agregar como comentario porque funcionó bien sin necesidad de biblioteca o configuración. –

+0

@PatrickM excepto que tiene un [problema abierto] (https://github.com/janssk1/maven-graph-plugin/issues/3) para el soporte del módulo. – OrangeDog

Respuesta

25

Si la función gráfico de dependencias de m2eclipse no cubrir sus necesidades, tal vez echar un vistazo a la Maven Graph Plugin y en particular su objetivo graph:reactor.

ACTUALIZACIÓN: la característica Dependencia Graph era eliminado en m2eclipse 1,0. Para obtener más información, consulte: Maven POM-Editor: Dependency Graph missing

+3

Me gusta el gráfico: reactor, pero no veo ninguna forma de excluir dependencias de terceros. – Raman

+0

Aunque me gusta la respuesta, no veo una forma de excluir las dependencias de terceros del gráfico, como dijo @Raman. ¿Nos falta algo o simplemente no es posible? – Brambo

+1

Además, es demasiado malo el gráfico: reactor no tiene un modo de salida graphml, similar a 'dependency: tree -DoutputType = graphml'. De esta forma, la salida resultante se puede manipular en un editor como yEd. – Raman

2

¿No has abierto el pom a través de Eclipse y has echado un vistazo a las carpetas de pestañas del pom.xml donde una entrada es el nombre "Dependency Graph"? Ah, lo siento ... supervisar algo ... Puede crear un árbol de dependencias a través de la dependencia mvn: árbol en la línea de comandos, pero esto no produce una vista gráfica. Otra solución mejor podría ser el Maven Overview Plugin

9

Otra opción es el com.github.janssk1 maven dependency graph plugin. Este complemento envía las dependencias a un archivo graphml que se puede abrir y editar en un editor como yEd.

para generar el archivo GraphML:

mvn com.github.janssk1:maven-dependencygraph-plugin:1.0:graph 

Este plugin no ofrece actualmente ningún mecanismo para excluir las dependencias de 3 ª parte, AFAICT, pero se pueden borrar manualmente desde el gráfico usando yEd o por medio de una hoja de estilo XSLT que postprocesa los archivos graphml. Aquí es una hoja de estilo simple que elimina el tercer dependencias partido (cualquier dependencia no comenzando con el paquete proporcionado por el parámetro "interno"):

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:gml="http://graphml.graphdrawing.org/xmlns/graphml" 
    version="2.0"> 

    <xsl:output method="xml"/> 
    <xsl:param name="internal"/> 

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="gml:node[not(starts-with(@id, $internal))]"/> 

    <xsl:template match="gml:edge[not(starts-with(@source, $internal)) or not(starts-with(@target, $internal))]"/> 

</xsl:stylesheet> 

y ejecutarlo a través de un procesador compatible con XSLT 2.0, como Saxon:

saxon input.graphml exclude-third-party-deps.xsl internal="my.package" > input-internal.graphml 
+1

Gracias por proporcionar el XSLT. Puede ampliarlo fácilmente para filtrar múltiples nombres de paquetes, codificar por colores, etc., lo que sea. Muy útil cuando regeneras tu gráfica durante el ciclo de desarrollo. – sbk

+1

Intenté usar pero obtengo: No se pudo ejecutar el objetivo com.github.janssk1: maven-dependencygraph-plugin: 1 .2: graph (default-cli) en el proyecto cag-parent: No se puede escribir en el archivo :. ... – aName

+0

@aName Tengo el mismo problema 'No se pudo ejecutar el objetivo com.github.janssk1: maven-dependencygraph-plugin: 1.0: graph (default-cli) en el proyecto email_templates: No se puede escribir en el archivo:/home/acme/acme/module/email_templates/target/email_templates-42.1.0-SNAPSHOT-deps.graphml (No existe ese archivo o directorio) ' –

5

Pedido este proyecto también: https://github.com/roclas/pomParser

se crea un "gráfico" muy bueno que se puede navegar en ambas direcciones (hacia delante y hacia atrás). La idea es muy simple, y puede descargar y cambiar el código muy fácilmente.

+0

Muchas gracias. Es una herramienta realmente buena. –

+0

Pensé que el gráfico también sería gráfico, pero parece que el "gráfico" resultante es puramente textural con enlaces a las dependencias. – snap

3

Plugin de Maven Graph instalado: http://mvnplugins.fusesource.org/maven/1.10/maven-graph-plugin/index.html, configurado de esta manera para ocultar dependencias de terceros. Funcionó bien

<profile> 
    <id>graph</id> 
    <pluginRepositories> 
    <pluginRepository> 
     <id>mvnplugins.fusesource.org</id> 
     <url>http://mvnplugins.fusesource.org/repo/release</url> 
     <releases> 
     <enabled>true</enabled> 
     </releases> 
    </pluginRepository> 
    </pluginRepositories> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.fusesource.mvnplugins</groupId> 
     <artifactId>maven-graph-plugin</artifactId> 
     <version>1.10</version> 

     <configuration> 
      <hideExternal>true</hideExternal> 
     </configuration> 

     </plugin> 
    </plugins> 
    </build> 
</profile> 
6

existe exactamente lo que necesita, se le llama Pom Explorador.

puede encontrar la página web aquí: github.com/ltearno/pom-explorer

Es una herramienta para trabajar en un gráfico de proyectos de Maven. Como adelanto puedo decir que en mi máquina analiza 4000 archivos pom.xml en 4 segundos.Entonces muchas funcionalidades se proporcionan encima del gráfico pom analizado:

  • análisis de la dependencia (que depende de GAV, que Gavs este GAV depende, con transitividad),
  • resolución (explorador pom sabe propiedades que se definen, se gestiona las dependencias y las importaciones BOM),
  • manipulación (se puede utilizar para transformarle gráfico del pom, digamos que si quieres muchos proyectos para utilizar una nueva versión de una dependencia),
  • acumulación (explorador pom analiza el gráfico del pom y sabe en qué orden deberían construirse, ¡entonces construye todo! Incluso puede ver sus directorios de proyectos para el cambio),
  • exportando (hoy hay exportaciones de CSV y GRAPHML),
  • visualización (pom explorer puede mostrarle una visualización interactiva 3D personalizable del gráfico de sus proyectos).

Está en desarrollo activo en este momento, así que no dude en probarlo, ¡informe de errores y solicite características útiles! La documentación aún no está completa, así que ¡no dude en preguntar!

Gracias

+0

gracias por esta información, lo intentaré –

+0

Elegante pero no funciona. "ERROR GRANDE RPC" –

0

También he creado una herramienta para esto. Pasé el día pirateando así que todavía muy experimental =) ¡Las pruebas y contribuciones de código son bienvenidas!

Lo llamo Maven Repository Dependency Visualizer. No solo muestra dependencias, sino todos los artefactos involucrados.

Con esta entrada:

java -jar build/libs/maven-repository-dependency-visualizer-*-SNAPSHOT.jar \ 
-r http://repo1.maven.org/maven2 \ 
-fgs se.bjurr.violations \ 
-g se.bjurr.violations \ 
-a violation-comments-to-gitlab-gradle-plugin \ 
-v 1.9 
  • Un repositorio, como Nexus o Artifactory.
  • Uno o más grupos para incluir.
  • Un grupo, artefacto y versión.

Se dará salida a un gráfico que muestra las relaciones entre todos los artefactos que:

  • El artefacto dado depende.
  • Depende del artefacto dado.
  • Depende de cualquier artefacto del que dependa el artefacto dado.

enter image description here

Se puede utilizar para:

  • comprensión rápida del software está siendo desarrollado por una organización.
  • Determine cómo se deben diseñar las tuberías de entrega.
  • Encuentra dependencias extrañas entre artefactos.
  • y mucho más) =

Es available on GitHub.

Cuestiones relacionadas