使用哪个 servlet-api jar

IS_*_*_EV 5 java tomcat servlets maven tomcat8

我的应用程序需要部署在生产中的 tomcat 8 服务器中。在生产中,应用程序将使用 tomcat 8 附带的 servlet-api.jar。那么在开发中,我们应该使用以下哪个 servlet jar?他们都是一样的吗?

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


<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>8.0.20</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Jus*_*bie 0

javax罐子是规格。但由于它们都是provided-scoped,我猜你在部署时不需要。

来自Maven 文档

provided
Run Code Online (Sandbox Code Playgroud)

这很像编译,但表明您期望 JDK 或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition 构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖关系设置为提供的范围,因为 Web 容器提供了这些类。此作用域仅在编译和测试类路径上可用,并且不可传递。

如果您需要使用javax规范中的任何内容,那么您的框架很可能已在其依赖项中包含此 jar。只要您在开发过程中没有遇到任何有关未知类的运行时异常,我就不会太担心。