Как я могу сказать Знатоку 2 загружать Сервлет 3,0 API?
Я попробовал:
javax.servlet
servlet-api
3.0
provided
Я использую http://repository.jboss.com/maven2/, но какой репозиторий был бы корректен?
Приложение:
Это работает с зависимостью для всего Java EE 6 API и следующих настроек:
java.net
http://download.java.net/maven/2
javax
javaee-api
6.0
provided
Я предпочел бы только добавлять Сервлет API как зависимость, но "Brabster" может быть правильным, что отдельные зависимости были заменены Профилями Java EE 6. Существует ли источник, который подтверждает это предположение?
Я бы предпочел добавить только сервлетный API в качестве зависимости,
Честно говоря, я не совсем понимаю, почему, но неважно...
Брабстер отдельные зависимости были заменены профилями Java EE 6. Есть ли источник, подтверждающий это предположение?
Репозиторий maven с Java.net действительно предлагает следующий артефакт для WebProfile:
<repositories>
<repository>
<id>java.net2</id>
<name>Repository hosting the jee6 artifacts</name>
<url>http://download.java.net/maven/2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Эта банка включает в себя Servlet 3.0, EJB Lite 3.1, JPA 2. 0, JSP 2.2, EL 1.2, JSTL 1.2, JSF 2.0, JTA 1.1, JSR-45, JSR-250.
Но, насколько мне известно, ничто не позволяет сказать, что эти API не будут распространяться отдельно (в репозитории java.net или где-нибудь еще). Например (хорошо, это может быть в конкретном случае), JSF 2.0 API доступен отдельно (в репозитории java.net):
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.0-b10</version>
<scope>provided</scope>
</dependency>
А на самом деле, вы можете получить javax.servlet-3.0.jar
из там и установить его в вашем собственном репозитории.
Я нашел пример POM для Сервлета 3.0 API на DZone с сентября.
Предлагаю использовать java.net repo, на http://download.java.net/maven/2/
Там есть Java EE API, например http://download.java. net/maven/2/javax/javaee-web-api/6.0/ с POM, которые выглядят так, как будто они могут быть тем, что вам нужно, например:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
</dependency>
Я предполагаю, что соглашения о версиях для API были изменены, чтобы они соответствовали версии общей спецификации EE (т.е. Java EE 6 vs. Servlets 3.0) как часть новых "профилей". Заглядывая в JAR, кажется, что там есть все сервлеты 3.0. Наслаждайтесь!
К сожалению, добавление javaee-(web)-api в качестве зависимости не дает вам Javadoc или Source к Servlet Api для просмотра их из IDE. Это также относится и ко всем другим зависимостям (JPA, EJB, ...). Если вам нужны источники/javadoc API сервлетов, вы можете добавить следующее в pom.xml (работает, по крайней мере, для JBoss&Glassfish):
Repository:
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
Dependency:
<!-- Servlet 3.0 Api Specification -->
<dependency>
<groupId>org.jboss.spec.javax.servlet</groupId>
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
<version>1.0.0.Beta2</version>
<scope>provided</scope>
</dependency>
Я полностью удалил javaee-api из своих зависимостей и заменил его отдельными частями (javax.ejb, javax.faces, ...), чтобы получить источники и Javadoc для всех частей Java EE 6.
EDIT:
Вот эквивалентная зависимость Glassfish (хотя обе зависимости должны работать, независимо от того, какой appserver вы используете).
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>