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

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

14 голосов
/ 28 декабря 2010
<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, это приведет к ошибке?)

Ответы [ 2 ]

24 голосов
/ 30 декабря 2010

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

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

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

Servlet API обратно совместим, см .: Являются ли Java Servlet API обратно совместимыми?

6 голосов
/ 28 декабря 2010

Это зависит.

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

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

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

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

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

...