Есть ли способ использования репозитория "Workspace project" maven? - PullRequest
10 голосов
/ 04 февраля 2011

У нас есть: Eclipse 3.6, Maven (M2Eclipse), два проекта (ProjectA и ProjectB) с pom.xml.

ProjectB зависит от ProjectA (используется maven).

  1. Если мы установим ProjectA в локальный репозиторий (установка maven), ProjectB разрешит зависимости OK.

  2. Если мы не установим ProjectA в локальный репозиторий. В Maven POM Editor мы добавляем ProjectA в качестве зависимости ProjectB (M2Eclipse использует репозиторий «проект рабочей области» для разрешения этой зависимости).

ОК, добавлено. Но если мы сделаем "maven package" или другие цели плагинов ... зависимость не решена. И у нас есть что-то вроде этого:

Скачивание: http://repo1.maven.org/maven2/Artifact/ProjectA/maven-metadata.xml

и, конечно, это не может быть решено.

Теперь вопрос. Как я могу использовать «Workspace project» при сборке ProjectB?

P.S. Почему я не использую "maven install"? Хорошо, это 100% метод, но когда я делаю много небольших изменений в нескольких, это слишком долго, чтобы делать лишние операции.

P.S.S. «Проект рабочего пространства» мы можем видеть в Window -> Show View -> Maven Repositories.

Ответы [ 3 ]

2 голосов
/ 01 ноября 2013

Я думаю, что идея запуска «пакета Maven» или аналогичных целей из Eclipse состоит в том, чтобы сделать то, что maven сделал бы, если бы, например, запускался из командной строки. Сценарий, который вы даете, не сработал бы и в командной строке.

Если проект B зависит от проекта A (через pom.xml), это означает, что проект A должен быть доступен в хранилище. Неважно, локальный ли он (через установку mvn) или удаленный через (развертывание mvn), но пакета mvn недостаточно. Это просто поместит пакет в папку / target.

Единственное исключение было бы, если оба проекта находятся в одном и том же реакторе, я полагаю, что оба проекта являются модулями какого-то другого "родительского" проекта. В этом случае запуск целей maven на одном из подмодулей может помочь разрешить зависимости. Хотя не уверен на 100%.

Вернуться к вашему вопросу: «Теперь вопрос. Как я могу использовать« Workspace project »при сборке ProjectB?». Нет, я так не думаю.

1 голос
/ 04 февраля 2011
  1. Необходимо разрешить зависимость рабочей области. Попробуйте это,

    run> запустить конфигурации> Maven Build> new> Выбрать проект B> поставить галочку «разрешить артефакт рабочей области»> установить цели как package

    также установите флажок в автономном режиме.

  2. Возможно, вам нужно указать точный version проекта A в теге зависимости projectB. Иначе, это может быть сделано в общедоступном репозитории Maven для получения последней версии.

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

0 голосов
/ 06 сентября 2012

Попробуйте это (в ProjectB):

Maven > Enable Workspace Resolution

Подобная проблема была решена и здесь.

...