Подтвердить что ты не робот

Maven предоставил объем

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
</dependency>

Я использую этот импорт зависимостей в моем проекте pom.xml. Мой вопрос: я объявил 2.5 как версию. Однако важно ли писать более низкую версию? Например, я имею в виду, что если мой проект использует версию 3.0, и я пишу, что будет предоставлен 2.5? (Я имею в виду, что допустим, что 2.5 отлично, и мой проект работает хорошо, если я ничего не меняю и просто изменяю 2.5 до 2.0, это вызывает ошибку?)

4b9b3361

Ответ 1

Это зависит.

Вообще говоря, если вы ожидаете точной версии (даже если предоставлено), то это то, что вы должны предоставить.

Однако есть примеры, когда вам может понадобиться немного усовершенствовать версии. Это, как говорится, я бы одержал 2 очка:

1) Возможно, что ваш проект ожидает более низкой версии и будет иметь более высокую версию; , если более высокая версия не является основной.. Я бы предложил взглянуть на хорошую версию версий с открытым исходным кодом, например Apache project.

2) Вероятно, НЕ ok, чтобы ваш проект ожидал более высокую версию и получил более низкую. Основная причина заключается в том, что вы не можете ожидать чего-то, чего может не быть.

Надеюсь, это поможет.

Ответ 2

Правильное решение - объявить точную версию api-сервлета, используемую в контейнере, для младшего.

Ключевое слово предоставляется: любая версия, которую вы указали, используется во время компиляции и для тестирования. Во время выполнения предполагается, что он предоставляется контейнером времени выполнения, например. Jetty.

Если фактическая библиотека времени выполнения отличается от декларации в вашем POM, вы вызываете проблемы. Будете ли вы или не будете испытывать проблемы, это вопрос совместимости версий.

API Servlet совместим с обратной связью, см. Совместимы ли API-интерфейсы Java Servlet?