Maven не обновляет / не загружает файлы SNAPSHOTS, если выполняется с параметром '-U, - update-snapshots' - PullRequest
1 голос
/ 17 января 2020

Я выполняю сборку maven с 'mvn clean deploy' в SNAPSHOT-версии моей, скажем, dependency-lib . Сборка прошла успешно, и артефакт успешно развернут в артефакте.

Затем я выполняю maven с аргументами "mvn -U clean package" на моем, скажем, dependee-proj , он не загружает последнюю развернутую версию dependency-lib . Он просто загружает maven-metadata.xml из артефакта и пропускает загрузку файлов jar. Я проверил локальный репозиторий maven, и там только некоторые xmls были обновлены и нет новых обновлений jar файлов.

Это что-то не так, что я делаю?

PS: Удаление dependency-lib работал, но почему-то я чувствую, что это не вменяемая вещь.

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Maven состоит из фаз. Эти фазы :

  • validate - подтвердить правильность проекта и наличие всей необходимой информации
  • compile - скомпилировать исходный код проект
  • test - протестировать скомпилированный исходный код, используя подходящую среду модульного тестирования. Эти тесты не должны требовать, чтобы код был упакован или развернут
  • package - взять скомпилированный код и упаковать его в распространяемый формат, такой как JAR.
  • verify - запустить любой проверка результатов интеграционных тестов на соответствие критериям качества
  • install - установить пакет в локальный репозиторий, для локального использования в качестве зависимости в других проектах
  • deploy - выполнено в среде сборки копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.

Поскольку этап deploy выполняется последним, это означает, что перед ним все предыдущие были выполнены фазы , включая фазу install, которая устанавливает артефакт в вашем локальном хранилище.

Поэтому, когда deploy завершится, ваш локальный и удаленный репозиторий будут иметь самую последнюю версию, которую вы только что загрузили, так что нет необходимости загружать последнюю версию с пульта, поскольку она уже присутствует в вашем локальном хранилище.

Что-то не так, что я делаю?

Наконец, чтобы ответить на это, ничего странного не происходит, только нормальное поведение.

Удаление артефакта из локального хранилища, конечно, вынуждает maven загружать артефакт с пульта, поскольку именно так работает maven.

0 голосов
/ 17 января 2020

Поместите updatePolicy для хранилища, в которое вы помещаете sh свои снимки. В идеале это то, как снимки обновляются, а затем обрабатываются Maven.

<repositories>
    <repository>
        <id>you-snapshots</id>
        <url>http://host/repos/snapshots</url>
        <snapshots>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
</repositories>

Фактически вы также можете сделать mvn -U, --update-snapshots

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...