Ответ 1
Как уже упоминалось в @user353852, ваша текущая зависимость содержит только API Java EE 6 и не содержит никаких тел методов. Таким образом, вы не можете запускать код против него. Чтобы запустить код за пределами контейнера, вам нужно получить "конкретную" зависимость (из репозитория GlassFish):
<repositories>
<repository>
<id>glassfish-repository</id>
<url>http://download.java.net/maven/glassfish</url>
</repository>
...
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
...
</dependencies>
Обратите внимание, что такие зависимости не должны быть объявлены с помощью области compile
, вы не хотите связывать ее (она должна быть provided
или, может быть, test
, но не compile
или runtime
)).
Интересно, важно ли для поставщика javaee выполнение? Обычно я использую серверы Apache, поэтому было бы здорово иметь ту же реализацию javaee, что и на сервере.
В теории нет. Но на практике я бы рекомендовал использовать JAR реализации с сервера, который вы собираетесь использовать (или из реализации Java EE Reference). Поскольку вы используете Java EE 6, это фактически означает JARS от GlassFish v3 в обоих случаях.
Второй вопрос гораздо более важен. javax.servlet - это только одна часть реализации javaee-api, где я могу найти других. Теперь мне нужно "javax/validation/Validation".
Для API Bean Validation вам понадобится следующее (Hibernate Validator - RI):
<repositories>
<!-- For Hibernate Validator -->
<repository>
<id>jboss</id>
<name>JBoss repository</name>
<url>http://repository.jboss.org/maven2</url>
</repository>
...
</repositories>
<dependencies>
<!-- Bean Validation API and RI -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.2.GA</version>
<scope>runtime</scope>
</dependency>
...
</dependencies>
Как я могу определить, какой артефакт реализует каждый аспект javaee. Может быть, где-то есть какая-то "карта"?
Ничего официального, но этот хороший ответ от BalusC поможет.