Является ли какой-либо метод использования хранилища maven в проекте Workspace?

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

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

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

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

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

Загрузка: http://repo1.maven.org/maven2/Artifact/ProjectA/maven-metadata.xml

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

Теперь вопрос. Как я могу использовать "Проект рабочей области" при сборке ProjectB?

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

P.S.S. "Проект рабочей области" мы видим Window → Show View → Maven Repositories.

Ответ 1

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

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

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

Вернуться к вашему вопросу: "Теперь вопрос. Как я могу использовать" Проект рабочей области "при сборке ProjectB?". Нет, я так не думаю.

Ответ 2

  • Зависимость рабочей области должна быть разрешена. Попробуйте это,

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

    выберите офлайн-флажок.

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

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

Ответ 3

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

Maven > Enable Workspace Resolution

Аналогичная проблема была решена здесь таким образом.