#java #maven #maven-3 #maven-plugin
#java #maven #maven-3 #maven-плагин
Вопрос:
У меня есть настройка одного проекта, которую я использую versions-maven-plugin
для получения последней версии.
Когда я запускал mvn clean
раньше mvn package
, получал обновленное сообщение, в котором указано
[INFO] Updated old_version:jar:0 to version new_version.
Но когда я работал mvn clean package
вместе, maven не смог получить последнюю версию, и я получил это сообщение об ошибке
Could not find artifact old_version:jar:0
Почему это происходит? Если maven следует порядку выполнения, тогда он должен очистить, который сначала обновляет версию, а затем пакет.
Есть идеи, почему mvn clean package
команда не работает.
Ответ №1:
Запуск mvn clean
и затем mvn package
не совсем то же самое, что mvn clean package
.
Причина: Maven разрешает все зависимости перед запуском любого из жизненных циклов.
Итак, если вы запустите mvn clean
, а затем mvn package
получите:
- разрешает зависимости
- обновляет вашу зависимость
- разрешает зависимости
- пакет
но если вы запустите mvn clean package
, вы получите:
- разрешает зависимости
- обновляет вашу зависимость
- пакет (с разрешенными зависимостями с самого начала)
Резюмирую: вы не можете обновлять и использовать зависимости в одном и том же запуске Maven.
Комментарии:
1. Спасибо за краткое объяснение. Разве я не могу использовать одну единственную команду для достижения того же вместо двух отдельных команд (т.Е. mvn clean и mvn package)?
2. Нет, это невозможно.
3. Затем я хочу устранить еще одно сомнение в этом, мой проект с одним модулем. Для многомодульного проекта он также не должен работать. Но он работает абсолютно нормально для многомодульного модуля с одной командой (т.Е. mvn clean package).
4. Определена ли версия зависимости в родительском POM, в то время как зависимость находится в дочернем проекте?
5. Нет, это не упоминается в родительском pom.