Maven-Abhängigkeit für Servlet 3.0 API?
Wie kann ich Maven 2 anweisen, die Servlet 3.0 API zu laden?
Ich habe es versucht:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Ich verwende http://repository.jboss.com/maven2/, aber welches Repository wäre das richtige?
Nachtrag:
Es funktioniert mit einer Abhängigkeit für die gesamte Java EE 6 API und den folgenden Einstellungen:
<repository>
<id>java.net</id>
<url>http://download.java.net/maven/2</url>
</repository>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
Ich würde es vorziehen, nur die Servlet API als Abhängigkeit hinzuzufügen, aber "Brabster" könnte Recht haben, dass separate Abhängigkeiten durch Java EE 6 Profile ersetzt wurden. Gibt es eine Quelle, die diese Vermutung bestätigt?
226
3
Ich würde es vorziehen, nur die Servlet-API als Abhängigkeit hinzuzufügen,
Um ehrlich zu sein, ich bin nicht sicher, warum zu verstehen, aber egal...
Das Maven Repository von Java.net bietet tatsächlich das folgende Artefakt für das WebProfile an:
Dieses Jar enthält 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.
Aber meines Wissens nach kann man nicht sagen, dass diese APIs nicht separat verteilt werden (im java.net Repository oder irgendwo anders). Zum Beispiel (ok, das mag ein Sonderfall sein) ist die JSF 2.0 API separat verfügbar (im java.net Repository):
Und eigentlich könnten Sie
javax.servlet-3.0.jar
von dort bekommen und es in Ihrem eigenen Repository installieren.Leider gibt Ihnen das Hinzufügen der javaee-(web)-api als Abhängigkeit nicht die Javadoc oder den Quellcode der Servlet-Api, um sie innerhalb der IDE zu durchsuchen. Dies ist auch bei allen anderen Abhängigkeiten (JPA, EJB, ...) der Fall. Wenn Sie die Servlet-API-Quellen/Javadoc benötigen, können Sie Folgendes zu Ihrer pom.xml hinzufügen (funktioniert zumindest für JBoss&Glassfish):
Repository:
Abhängigkeit:
Ich habe die javaee-api komplett aus meinen Abhängigkeiten entfernt und sie durch die einzelnen Teile (javax.ejb, javax.faces, ...) ersetzt, um die Quellen und Javadocs für alle Teile von Java EE 6 zu erhalten.
EDIT:
Hier ist die entsprechende Glassfish-Abhängigkeit (obwohl beide Abhängigkeiten funktionieren sollten, unabhängig davon, welchen Appserver Sie verwenden).
Ich habe ein Beispiel-POM für die Servlet 3.0 API auf DZone vom September gefunden.
Ich schlage vor, dass Sie das java.net Repo verwenden, unter http://download.java.net/maven/2/
Dort gibt es Java EE APIs, z.B. http://download.java.net/maven/2/javax/javaee-web-api/6.0/ mit POM, die so aussehen, als ob sie genau das sind, was Sie suchen, zum Beispiel:
Ich vermute, dass die Versionskonventionen für die APIs geändert wurden, um der Version der allgemeinen EE-Spezifikation (d.h. Java EE 6 vs. Servlets 3.0) als Teil der neuen Profile zu entsprechen. Ein Blick in die JAR-Datei zeigt, dass alle 3.0-Servlets enthalten sind. Viel Spaß!