Всегда ли 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, взгляните на эту статью, которую я собрал.