Вопрос

Я только что закончил преобразование одного из наших внутренних каркасных проектов из муравья в Maven. Maven Build работает нормально и развертывается в нашем репозитории без проблем.

Проблема в том, что когда другие проекты пытаются потреблять рамки, она не работает. Единственное, что загружено, это топ -карт.

Я пытался добавить некоторые записи в зависимости в один или несколько различных модулей, но независимо от того, какой из них я добавляю, я получаю ошибку круглой зависимости. Я также попытался создать 2 -й POM -файл верхнего уровня без модулей и нескольких зависимостей, чтобы перезаписать один в менеджере репозитория. Это приводит к загрузке некоторых зависимостей, но тогда сборка Maven будет висеть в случайных местах. Основываясь на Windows Task Manager, похоже, что он в бесконечном цикле. Таким образом, 2 -й POM -файл не кажется ответом (или я делаю это неправильно).

Мой фреймворк -файл POM выглядит примерно так:

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>framework_snt</groupId>
  <artifactId>SFP</artifactId>
  <packaging>pom</packaging>
  <name>SFP framework</name>
  <version>6.3</version>

  <modules>
.... 50+ modules here
  </modules>

И затем обычные свойства, управление зависимостями и плагинмингические записи для высшего уровня POM.

В потребляющем модуле у меня только что есть следующее:

<dependency>
  <groupId>framework_snt</groupId>
  <artifactId>SFP</artifactId>
  <version>6.3</version>
  <type>pom</type>
</dependency>

Это находится на верхнем уровне, поэтому все подмодули имеют доступ к библиотекам фреймворта, чтобы упростить разработчики.

Как мне настроить вещи, чтобы все зависимые файлы JAR будут загружены моими потребляющими проектами?

Это было полезно?

Решение

Похоже, что ваш фреймворк -проект создает несколько артефактов JAR, по одному для каждого дочернего модуля, но нет артефакта JAR для родительского проекта. Таким образом, объявление зависимости от POM родительского проекта - это не то, что вы хотите сделать. Вместо этого вам нужно объявить зависимость от каждого из детских модулей вашего фреймворчатого проекта.

У меня есть аналогичная установка, где у меня есть проект «Toolkit» с несколькими модулями (каждый из которых производит артефакт JAR). Затем в других своих проектах я объявляю зависимости от любых модулей, которые мне нужно использовать. Я, однако, не объявляю зависимость от моего файла Pom Poom Poom «инструментария». Вместо этого я просто объявляю зависимости от детских модулей JAR Artifacts.

<dependency>
  <groupId>com.mycompany.toolkits</groupId>
  <artifactId>file-utils</artifactId>
  <version>1.0.0</version>
</dependency>

Обратите внимание, что моя объявление о зависимости указывает на один из моих детских модулей и не объявляет <type>pom</type> как ты это сделал. Если вы хотите быть действительно явным, вы могли бы объявить <type>jar</type> вместо.

Другие советы

А framework Пом, как вы называете, это parent Пом вашего многомодульного проекта.

Хотя модули могут зависеть друг от друга, это не может зависеть от этого родителя. Это то, что, возможно, вызывает круговую зависимость.

Вам необходимо будет рассмотреть свои модули и определить, какие модули зависят от того, какие и соответственно указывают зависимости. Кроме того, эти зависимости обычно jar Зависимости - упаковка, которая будет содержать источники и ресурсы.

Мавен по примеру является одним из множества доступных ресурсов, который дает дополнительную информацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top