【问题标题】:how to add the servlet api to my pom.xml如何将 servlet api 添加到我的 pom.xml
【发布时间】:2010-11-25 02:51:59
【问题描述】:

如何将 servlets API 添加到项目的 pom.xml 中

mvnrepository.com 有很多 servlet api 和类似名称的项目,我不知道哪个是正确的。还是他们都还好?

【问题讨论】:

标签: java maven-2 servlets pom.xml


【解决方案1】:

我相信大多数 web/app 服务器都捆绑了一个版本的 servlet api,因此您不会希望将 api 捆绑到您的 .war 文件中。您将需要找出您的服务器包含哪个版本,然后您可以使用

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>${servlet-api-version}</version>
    <scope>provided</scope>
</dependency>

用您的版本替换 servlet-api-version。您需要指定“提供”范围,以便 api.jar 不包含在您的 war 文件中。

【讨论】:

  • 您还必须在属性标签中添加 servlet-api-version 吗?
  • 最好,是的,或者如果您愿意,您可以直接将版本放在版本标签中。
【解决方案2】:
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

【讨论】:

    【解决方案3】:

    对于 servlet-api 3.1.0,声明如下:

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

    【讨论】:

    • mvnrepositoryjavax.servlet:servlet-api:3.0-alpha-1 的条目上有人写过(我不知道是谁):注意:此工件已移至:新组 javax.servlet 新工件 javax .servlet-api 。所以看起来更正确的javax.servlet:servlet-api实际上并不是正确的。
    • 太棒了,谢谢,还是问问题,是怎么知道的?请分享 maven-fu :)
    【解决方案4】:

    我们使用

    <dependency>
        <groupId>javax</groupId>
        <artifactId>j2ee</artifactId>
        <version>1.4</version>
        <scope>provided</scope>
    </dependency>
    

    但如果您只需要 servlet api,您可能需要使用

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

    【讨论】:

      【解决方案5】:

      这取决于您使用的 servlet API 版本。

      javax.servlet 工件将为所有 servlet API 版本提供 jar。

      【讨论】:

        【解决方案6】:

        当您不想将 jar 文件放在 WEB-INF/lib 文件夹中时,可以使用提供的范围,而是在运行时通过容器或 JDK 提供它。

        【讨论】:

          【解决方案7】:

          雅加达 EE

          近年来,Oracle 将 Java EE 技术转移到了Eclipse Foundation。那里的技术已重命名为Jakarta EE。所以 Java Servlet 现在被称为Jakarta Servlet

          此名称更改是为了尊重 Oracle 的商标。进行网络搜索,找到许多讨论这一转变的文章和视频。

          此名称更改包括将类的包命名从 javax.* 更改为 jakarta.*。这是一个突破性的变化,尽管更新您的项目可能就像更改您的 import 语句一样简单。但请检查您依赖的任何库是否也有使用新命名的可用版本。

          小服务程序 5

          这种转变带来了新版本的 Servlet 规范。规范的Version 5Servlet 4 相同,但名称不同。

          对于当前版本,编辑您的 POM 文件以使用以下 Maven 依赖项。 Check for updates in a Maven repository 在版本编号中选择。

          您可以将使用 Servlet 5 构建的 Web 应用程序部署到 Web 容器,例如 Tomcat 10.0.x、Jetty 11.0.x、Glassfish 6 等。

          <dependency>
              <groupId>jakarta.servlet</groupId>
              <artifactId>jakarta.servlet-api</artifactId>
              <version>5.0.0</version>
              <scope>provided</scope>
          </dependency>
          

          小服务程序 6

          Jakarta Servlet 6 规范目前正在开发中,并将包含重大更改。该规范将于 2022 年晚些时候最终确定。

          请参阅overview pageproduct pageproject links pagerepository coordinates page

          <dependency>
              <groupId>jakarta.servlet</groupId>
              <artifactId>jakarta.servlet-api</artifactId>
              <version>6.0.0</version>
              <scope>provided</scope>
          </dependency>
          

          【讨论】:

            猜你喜欢
            • 2016-10-28
            • 1970-01-01
            • 2013-05-10
            • 1970-01-01
            • 2013-11-03
            • 2019-12-25
            • 2012-08-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多