Maven: чтобы очистить mvn последней версии, тогда пакет mvn работает нормально, но пакет mvn clean нет

#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.