Позволяют ли артефакты Maven или их метаданные, развернутые в удаленном репозитории, надежно определить, является ли артефакт стабильной версией?
Снапшоты имеют суффикс SNAPSHOT
, однако есть также альфа-, бета-версии и предварительные версии, и названия не обязательно совпадают, например:
https://mvnrepository.com по-разному выделяет нерелизные версии, но может просто ищет по определенным ключевым словам?
(источник)
В Maven SNAPSHOT часто не используют SNAPSHOT
в качестве суффикса... у них всегда есть суффикс...
@khmarbaise, я исправил неверное утверждение о снимках, спасибо. Я бы сказал, что именно создатель артефакта определяет его стабильность. Должна быть причина, по которой создатель решил выпустить что-то как «бета», а не как полную версию, и я предполагаю, что это (еще не всесторонне проверенная) стабильность.
Я могу сказать, что для maven-surefire-plugin версии 3.0.0-M5 я использую его в производстве ... я называю его достаточно стабильным ... достаточно проверенным? Плагины и т. д. имеют большие наборы тестов... Мне бы 2500 тестов? ci-builds.apache.org/job/Maven/job/maven-box/job/maven-surefire/… с моей точки зрения очень хорошо...
@khmarbaise Re «у них всегда есть суффикс ...» - это относится только к локальному репозиторию Maven. В удаленных репозиториях, управляемых диспетчером репозиториев, снимки обычно имеют метку времени + квалификатор последовательности, например. Nexus: «, где фактическое используемое число состоит из метки даты/времени и счетчика ».
@GeroldBroser Просто неправильно, это определяется только менеджером репозитория ... извне вы всегда запрашиваете -SNAPSHOT
... Отметка времени + #. сделано только для того, чтобы их можно было хранить на стороне сервера и предотвращать коллизии... Maven ничего не знает о метке времени и т. д. Maven знает только -SNAPSHOT
...
@khmarbaise Из Maven-пуриста вы правы. Но в среде разработки есть (намного) больше, чем просто Maven. Вот что я хотел выразить.
Все инструменты справляются с этим таким образом... они развертывают либо релизы, либо SNAPSHOT, а менеджеры репозитория самостоятельно обрабатывают вещи для хранения и т. д. Я знаю, что есть гораздо больше, чем Maven, например BuildR, SBT, Kobalt, Ant, Gradle, Buck, Bazel и т. д., и это лишь некоторые из них...
Если строки версий синтаксически правильны Semantic Versioning 1.0.0 номеров версий, то почти во всех случаях сравнение версий следует правилам приоритета, изложенным в этой спецификации. [...]
[...]
Когда строки версии не соответствуют семантическому управлению версиями, требуется более сложный набор правил. [...] Это дает последовательность номеров версий (числовых токенов) и квалификаторов версий (нечисловых токенов) с «.» или "-" префиксы.
Итак, alpha1
, beta2
, M5
, rc-2
, RC1
это:
а) для «предварительной версии [...], обозначаемой добавлением произвольной строки сразу после версии исправления и тире». в соответствии с пунктом 4. Спецификации семантической версии (SemVer)
б) все квалификаторы для (предварительных) выпусков, а не снимков, где M
означает этап.
С точки зрения содержания вы можете доверять создателям артефакта только в том, что они использовали правильный квалификатор, который представляет фактический статус артефакта.
Спасибо, справочник POM был наиболее полезным, поскольку он определяет: «за исключением следующих токенов, которые идут первыми в этом порядке», для которых порядок SemVer не применяется. На самом деле они перечисляют все примеры, которые у меня были в моем ответе.
В связи с этим возникает вопрос: как вы определяете стабильную версию?