내 응용 프로그램에서 다음과 같은 J2EE 종속성을 포함하는 경우, 내가 서블릿과 JAX-RS 클래스와 인터페이스에 액세스 할 수 있습니다서블릿과 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
(이것은 모든 기본적인 것들입니다, 내가 혼란 스러워요 이유를 알고하지 않습니다 내가 뭔가를 분명 실종해야합니다.). JAX-RS 2.0
로
특히 어떤 클래스에 대해 이야기하고 있습니까? –