Если я включаю следующую зависимость 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
(Это все основные вещи, я не знаю, почему я запутался я должен быть отсутствующий что-то очевидное.).
В каком классе, в частности, вы говорите? –