Может ли кто-нибудь объяснить мне Maven 2 (или 3) разрешение зависимостей мне? - PullRequest
3 голосов

Раньше я использовал Maven в нескольких проектах, но они уже были кем-то настроены.Я быстро понял основные понятия (группы, артефакты и версии для jar-файлов, локальных и удаленных репозиториев), поэтому предположил, что если меня спросят, я смогу легко создать новый проект с нуля.

Оказалось, что это не тот случай, когда я имею дело с несколькими модулями, которые зависят друг от друга.Я копался в документах Maven, но они либо слишком краткие, либо слишком технические (иногда мне кажется, что люди из Maven написали это для себя, а не для пользователей Maven).Поэтому я прошу помощи сообщества.

Вот типичный сценарий:

Три репозитория:

Я строю обычный проект Java EE, состоящий из одного EJB-контейнера с соответствующим клиентомjar, веб-модуль и JPA-модуль (мне нравится держать свои сущности и все db-соединения отделенными от бизнес-логики).Это дает мне 5 проектов в моей IDE:

  • myapp-ear
  • myapp-ejb
  • myapp-ejb-client
  • myapp-jpa
  • myapp-web

myapp-jpa используется myapp-ejb и myapp-web.myapp-ejb-client содержит бизнес-интерфейсы для моих EJB-компонентов.

Как мне все это настроить?Я подозреваю, что мне нужен какой-то родительский проект, но я не уверен, как организовать межпроектное разрешение зависимостей.Например: в настоящее время, когда я указываю

<dependency>
  <groupId>com.mycompany.myapp</groupId>
  <artifactId>myapp-jpa</artifactId>
  <version>0.1-SNAPSHOT</version>
</dependency>

в myapp-ejb, pom.xml maven пытается найти его в моем хранилище и сообщает, что .jar не может быть найден.Даже если я собираю и устанавливаю все компоненты приложения в свой локальный репозиторий один за другим, Maven всегда не может создать сам файл ear: (

Я бы хотел, чтобы он работал под Eclipse или NetBeans.

1 Ответ

3 голосов
/ 23 января 2011

Я думаю, вы на правильном пути. Вам нужен родительский проект, чтобы собрать все вместе. В родительском проекте (а это важная часть) вам нужны ваши зависимости, выложенные NOT в разделе зависимостей вашего родительского pom, скорее, они вам нужны в вашем dependencyManagement разделе. Затем в дочернем pom вы можете объявить зависимости, которые есть в родительском.

Единственное другое замечание (о котором я могу подумать) заключается в том, что когда вы проверяете проект с использованием системы управления версиями в Eclipse, вам нужно помнить, чтобы проверять родительский проект «как проект Maven», в противном случае плагин m2Eclipse имеет тенденцию выходить из строя. и не разрешить вещи должным образом.

Надеюсь, это поможет.

...