Является ли какой-либо метод использования хранилища 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
Аналогичная проблема была решена здесь таким образом.