Как настроить maven framework верхнего уровня pom - PullRequest
0 голосов
/ 13 января 2012

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

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

Я пытался добавить некоторые записи зависимостей в один или несколько различных модулей, но независимо от того, какой из них я добавляю, я получаю циклическую ошибку зависимости.Я также попытался создать pom-файл второго уровня без модулей и нескольких зависимостей, чтобы перезаписать его в менеджере хранилища.Это приводит к загрузке некоторых зависимостей, но тогда сборка maven будет зависать в случайных местах.на основе диспетчера задач Windows, это выглядит как в бесконечном цикле.Таким образом, файл 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>

и затем обычные свойства,записи управления зависимостями и pluginManagement для pom верхнего уровня.

в модуле потребления. У меня просто есть следующее:

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

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

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

Ответы [ 2 ]

2 голосов
/ 18 января 2012

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

У меня есть аналогичная установка, где у меня есть проект "toolkit" с несколькими модулями (каждый из которых создает артефакт jar).Затем в других моих проектах я объявляю зависимости от того, какие модули мне нужно использовать.Я, однако, не объявляю зависимость от моего pom-файла родительских проектов "toolkit".Вместо этого я просто объявляю зависимости от артефактов jar дочерних модулей.

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

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

0 голосов
/ 13 января 2012

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

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

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

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

...