Как правильно указывать зависимость в Maven для Selenide и других библиотек

В чем разница между

        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>RELEASE</version>
        </dependency>

и

<dependency>
    <groupId>com.codeborne</groupId>
    <artifactId>selenide</artifactId>
    <version>4.9.1</version>
    <scope>test</scope>
</dependency>

?? Я правильно понял, что первый вариант предпочтительнее так как автоматически подключает последнюю версию? Можно ли этот фокус применять ко всем остальным зависимостям?

1 лайк

Maven 3.x Compatibility Notes

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.

Использую версию 4.0.0 и прекрасно работают эти теги…

Это всего лишь совпадение.
Если копнуть в то как мавен резолвит версии, то можно узнать, что строка с версией делится на токены по точкам/дефисам. Если в токене есть не числа, то они вырезаются. Если токен остается пустым, то заменяется на 0. Соответственно release заменится на 0. А число без скобочек означает: взять конкретно эту версию, либо старше, если указанной нет. Так как версии 0 нет, то берется последняя.

2 лайка

Общая рекомендация - не надеяться на “RELEASE” или “LATEST”, а прописывать версию явно. Потому, что иначе в один прекрасный момент может прилететь обновление, которое внезапно сломает вам билд.

Селенида это, конечно, не касается. :slight_smile:

1 лайк

Значит, все же эти теги рабочие, просто не рекомендуется… Спасибо за ответ) А есть ли разница между Release and Latest?

И это хорошо)

Не знаю, рабочие ли. Я имел в виду любые механизмы, подтягивающие автоматически последнюю версию. Например, в мавене можно прописать <version>4.+</version>