У меня есть проект
A/
|--a1
|--a2
Сейчас в нашей организации есть еще один проект
B/
|--b1
|--b2
|--b3
(Каждый модуль a1, b1 и т. Д. И родительские проекты A, B имеют свой собственный файл pom.xml в соответствии со стандартными maven-правилами parent и child)
Оба проекта проверены на моем локальном затмении (из SVN). Я активно работаю над А.
Я узнал, что в B есть хорошая общая функциональность (b4), и мне нужно было ее использовать.
B/
|--b1
|--b2
|--b3
|--b4 (NEW)
Разработчик b4 развернул этот модуль b4 как артефакт в репозитории нашей организации. Я включил зависимость в POM моего модуля, то есть в a2 pom.xml. Eclipse загрузил требуемый артефакт из репозитория, и я мог импортировать в него классы.
Теперь проблема начинается ... Мне нужно было проверить исходный код b4 для какой-то цели, и, поскольку я уже проверил B на моем локальном затмении, я обновил его из SVN и вынул модуль b4. Я также запустил pom.xml модуля b4 с такими целями, как clean, package и т. Д. Через некоторое время, когда я закончил писать код, мне нужно было создать JAR-файл моего модуля a2. Я запустил "package" на pom.xml и BAM в a2 ошибки n ошибки для модуля a2. Эти ошибки также были не очень удобными для пользователя. Единственное, в логах наверняка было имя b4.
Решение: после многих часов попыток я запустил «mvn -U clean install» из консоли в директории проекта моего B (т.е. в ../codebase/B). Поскольку B является родительским, команда clean install была выполнена для всех модулей, включая b4, и она прошла успешно. После этого я запустил «mvn -U clean install» для моего родительского проекта, который называется A. И это сработало! Модуль a2 был успешно скомпилирован, установлен (упакован позже).
Здесь важным моментом было то, что если b4 находится в вашем рабочем пространстве, не устанавливайте только b4. Вам нужно будет выполнить чистую установку полной версии B. Я пришел к этому решению после прочтения ответа от Zuill.
РЕДАКТИРОВАТЬ: Еще одна вещь здесь, чтобы отметить, что если бы я не был проверен проект B в локальной среде, то эта проблема, возможно, не возникла бы для меня. Я склонен думать, что это произошло, потому что я проверил B в моей локальной рабочей области.