java - servlet 和 JAX-RS 依赖项来自哪里?

标签 java maven servlets jakarta-ee jax-rs

如果我在我的应用程序中包含以下 J2EE 依赖项,我就可以访问 servlet 和 JAX-RS 类和接口(interface):

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
    </dependency>

但他们来自哪里?在 Maven Central 我看到了 javax:javaee-api:7.0具有依赖性 javax:javaee-web-api:7.0 ,它又具有依赖项 javax.servlet:javax.servlet-api:3.1.0javax.ws.rs:javax.ws.rs-api:2.0 ,所以从表面上看,这就是答案。

但是所有这些依赖项都被标记为可选,这意味着作为传递依赖项它们不会出现在我的项目中,除非我明确包含它们。但是我的程序编译时只依赖于 javax:javaee-api:7.0。为什么?

这是我的依赖树;我看不出他们从哪里进来:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ temp-server ---
[INFO] com.example:test-server:war:1.0.0-SNAPSHOT
[INFO] +- com.google.code.findbugs:jsr305:jar:3.0.1:provided
[INFO] \- javax:javaee-api:jar:7.0:compile
[INFO]    \- com.sun.mail:javax.mail:jar:1.5.0:compile
[INFO]       \- javax.activation:activation:jar:1.1:compile

(这都是基本的东西;我不知道为什么我很困惑。我一定是遗漏了一些明显的东西。)

最佳答案

由于 JAX-RS 2.0Java EE 7 的一部分,定义其 API 的类直接包含在 Artifact javax:javaee-api:7.0 中 所以只要你只使用标准类就足以编译你的程序。

关于java - servlet 和 JAX-RS 依赖项来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40489925/

相关文章:

java - Spring 透视图未在 Eclipse 中显示

java - Google 存储客户端库 (appengine-gcs-client) 具有不可用的依赖项 (google-http-client-parent :pom:1. 24.1)

java - 使用 Maven 生成 JavaFX 项目

java - 如何从android向servlet发送带有参数的请求

Java缓存和动态更新

eclipse - Eclipse 中请求的资源不可用错误

java - 如何用 Java 编写正确的微基准测试?

java - 使用过多内存的 Hibernate 关联

java - 如何知道线程何时停止或被停止?

java - 如何测试从其自己的 JAR 文件中复制文件夹的功能?