Как уже упоминалось @ 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). Поскольку вы используете Java EE 6, это фактически означает JARS из GlassFish v3 в обоих случаях.
Второй вопрос гораздо важнее. javax.servlet - это только одна часть реализации javaee-api, где я могу найти другие. Теперь мне нужно "javax / validation / Validation".
Для API проверки бинов вам понадобится следующее (Hibnate 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 поможет.