Всегда ли maven развертывает файл maven-metadata.xml после всех загрузок артефактов?

Есть ли какой-нибудь порядок, в котором Maven развертывает артефакты? Из того, что я вижу, я могу сказать, что он загружает все артефакты и, наконец, обновляет файлы maven-medata.xml.

http://localhost:8000/mavenrepository/test1/com/mypackage/mavenproject1/1.0-SNAPSHOT/maven-metadata.xml http://localhost:8000/mavenrepository/test1/com/mypackage/mavenproject1/maven-metadata.xml

Теперь гарантируется, что maven всегда загружает эти 2 файла, наконец, после загрузки других артефактов?

1 ответ

Решение

Maven всегда развертывает файлы артефактов в одной и той же последовательности. Обычно это выглядит примерно так:

[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ hello-world ---
Downloading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/maven-metadata.xml
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.jar
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.jar (3 KB at 11.5 KB/sec)
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.pom
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.pom (2 KB at 41.6 KB/sec)
Downloading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/maven-metadata.xml
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/maven-metadata.xml
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/maven-metadata.xml (798 B at 21.1 KB/sec)
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/maven-metadata.xml
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/maven-metadata.xml (312 B at 8.7 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Как вы можете видеть, первое, что он делает, это пытается решить maven-metadata.xml файл на уровне артефакта, чтобы выяснить, есть ли у этого артефакта другие версии и нужно ли создавать новый maven-metadata.xml файл или обновите существующую (если она есть) новой версией, которую он развертывает. maven-metadata.xml Файл всегда создается или обновляется в самом конце развертывания.

Есть три уровня, на которых maven-metadata.xml файлы могут быть расположены:

  • Уровень артефакта: это на groupId/artifactId уровень, (например, если ваш groupId является org.foo.examples и ваш artifactId является hello-worldпуть будет org/foo/examples/hello-world/maven-metadata.xml). Используется для управления базовыми или релизными версиями.
  • Уровень версии: это на groupId/artifactId/version уровень, (например, если ваш groupId является org.foo.examples и ваш artifactId является hello-world и версия 1.0-SNAPSHOTпуть будет org/foo/examples/hello-world/1.0-SNAPSHOT/maven-metadata.xml). Это используется для управления моментальными снимками с метками времени.
  • Уровень группы плагинов: это на плагине groupId уровень и используется для управления различными плагинами в рамках одной группы плагинов.

Для очень подробного объяснения того, как работают метаданные Maven, взгляните на эту статью, которую я собрал.

Другие вопросы по тегам