【发布时间】:2017-03-22 06:10:25
【问题描述】:
如果我在我的应用程序中包含以下 J2EE 依赖项,我就可以访问 servlet 和 JAX-RS 类和接口:
<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.0 和 javax.ws.rs:javax.ws.rs-api:2.0,所以从表面上看,这就是答案。
但所有这些依赖项都标记为 optional,这意味着作为传递依赖项,除非我明确包含它们,否则它们不会出现在我的项目中。但是我的程序编译时只是依赖于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
(这都是基本的东西;我不知道为什么我会感到困惑。我一定遗漏了一些明显的东西。)
【问题讨论】:
-
你具体说的是哪一门课?
标签: java maven servlets jakarta-ee jax-rs