Как создать график зависимости между всеми модулями проекта Maven?

Как создать график зависимости между всеми модулями проекта Maven (за исключением сторонних библиотек, таких как JUnit, SLF4J и т.д.)? Я не мог найти способ включить все модули в один граф, используя m2eclipse. Спасибо.

Ответ 1

Если функция Dependency Graph функции m2eclipse не отвечает вашим потребностям, возможно, посмотрите на Maven Graph Plugin и, в частности, его graph:reactor цель.

UPDATE: в файле m2eclipse 1.0 была удалена функция Dependency Graph. Для получения дополнительной информации см.: Maven POM-Editor: График зависимости отсутствует

Ответ 2

Другим вариантом является плагин com.github.janssk1 maven-графика зависимостей. Этот плагин выводит зависимости к графическому файлу, который можно открыть и отредактировать в редакторе, таком как yEd.

Чтобы создать файл graphml:

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

Этот плагин в настоящее время не предоставляет никакого механизма для исключения зависимостей сторонних разработчиков, AFAICT, но их можно удалить вручную из графика с помощью yEd или с помощью таблицы стилей XSLT, которая обрабатывает файлы графа. Вот простая таблица стилей, которая удалит зависимости третьей стороны (любая зависимость не начинается с пакета, предоставленного "внутренним" параметром):

<?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>

И выполните его с помощью совместимого с XSLT процессора, такого как Saxon:

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

Ответ 3

существует точно то, что вам нужно, оно называется Pom Explorer.

Вы можете найти здесь сайт: github.com/ltearno/pom-explorer

Это инструмент для работы над графиком проектов maven. В качестве тизера могу сказать, что на моей машине он анализирует 4000 pom.xml файлов за 4 секунды. Затем над анализируемым pom-графиком представлены многие функциональные функции:

  • анализ зависимостей (который зависит от GAV, от которого зависит этот GAV, с транзитивностью),
  • разрешение (pom explorer знает, где определены свойства, он управляет зависимостями и импортом bom),
  • (вы можете использовать его для преобразования вашего pom-графа, скажем, если вы хотите, чтобы многие проекты использовали новую версию зависимости),
  • build (pom explorer анализирует ваш pom-график и знает, в каком порядке они должны быть построены, тогда он строит все! он может даже смотреть ваши каталоги проектов для изменения),
  • экспорт (сегодня есть CSV и экспорт GRAPHML),
  • визуализация (pom explorer может показать вам интерактивную трехмерную настраиваемую визуализацию графика ваших проектов).

В настоящее время он находится в активной разработке, поэтому не стесняйтесь попробовать его, сообщить об ошибках и запросить полезные функции! Документация еще не завершена, так что не стесняйтесь спрашивать!

Спасибо

Ответ 4

Оформить этот проект также: https://github.com/roclas/pomParser

Он создает довольно крутой "график", который можно перемещать в обоих направлениях (вперед и назад). Идея очень проста, и вы можете легко загрузить и изменить код.

Ответ 5

Установленный плагин Maven Graph: http://mvnplugins.fusesource.org/maven/1.10/maven-graph-plugin/index.html, настроил его таким образом, чтобы скрывать зависимые от сторонних разработчиков. Отлично работает.

 <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

Разве вы не открыли pom через Eclipse и не посмотрели на вкладки pom.xml, где одна запись называется "Dependency Graph" ? Ах, извините... что-то надзор... Вы можете создать дерево зависимостей через mvn dependency: tree в командной строке, но это не создает графического представления. Другим лучшим решением может быть Maven Overview Plugin

Ответ 7

Я также создал инструмент для этого. Я провел день, взламывая его, так что все еще очень экспериментально =) Тестирование и вклад в код приветствуются!

Я называю это Maven Repository Dependency Visualizer. Он не только показывает зависимости, но и все задействованные артефакты.

С помощью этого ввода:

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
  • Репозиторий, например Nexus или Artifactory.
  • Включить одну или несколько групп.
  • Группа, артефакт и версия.

Он выведет график, показывающий отношения между всеми артефактами, которые:

  • Данный артефакт зависит от.
  • Зависит от данного артефакта.
  • Зависит от любого артефакта, от которого зависит данный артефакт.

введите описание изображения здесь

Его можно использовать для:

  • Быстрое понимание программного обеспечения, разрабатываемого организацией.
  • Определите, как должны конструироваться конвейеры доставки.
  • Найдите странные зависимости между артефактами.
  • И многое другое =)

доступно на GitHub.