?? Я правильно понял, что первый вариант предпочтительнее так как автоматически подключает последнюю версию? Можно ли этот фокус применять ко всем остальным зависимостям?
Internally, Maven 2.x used the special version markers RELEASE and LATEST to support automatic plugin version resolution. These metaversions were also recognized in the element for a declaration. For the sake of reproducible builds, Maven 3.x no longer supports usage of these metaversions in the POM. As a result, users will need to replace occurrences of these metaversions with a concrete version.
Это всего лишь совпадение.
Если копнуть в то как мавен резолвит версии, то можно узнать, что строка с версией делится на токены по точкам/дефисам. Если в токене есть не числа, то они вырезаются. Если токен остается пустым, то заменяется на 0. Соответственно release заменится на 0. А число без скобочек означает: взять конкретно эту версию, либо старше, если указанной нет. Так как версии 0 нет, то берется последняя.
Общая рекомендация - не надеяться на “RELEASE” или “LATEST”, а прописывать версию явно. Потому, что иначе в один прекрасный момент может прилететь обновление, которое внезапно сломает вам билд.
Не знаю, рабочие ли. Я имел в виду любые механизмы, подтягивающие автоматически последнюю версию. Например, в мавене можно прописать <version>4.+</version>