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?

Lösung

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...

Brabster separate Abhängigkeiten wurden durch Java EE 6 Profiles ersetzt. Gibt es eine Quelle, die diese Vermutung bestätigt?

Das Maven Repository von Java.net bietet tatsächlich das folgende Artefakt für das WebProfile an:



    java.net2
    Repository hosting the jee6 artifacts
    http://download.java.net/maven/2




    javax
    javaee-web-api
    6.0
    provided

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):


   com.sun.faces
   jsf-api
   2.0.0-b10
   provided

Und eigentlich könnten Sie javax.servlet-3.0.jar von dort bekommen und es in Ihrem eigenen Repository installieren.

Kommentare (6)

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:


  jboss-public-repository-group
  JBoss Public Repository Group
  https://repository.jboss.org/nexus/content/groups/public/

Abhängigkeit:



   org.jboss.spec.javax.servlet
   jboss-servlet-api_3.0_spec
   1.0.0.Beta2
   provided

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).


  org.glassfish
  javax.servlet
  3.0
  provided
Kommentare (1)

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:


  javax
  javaee-web-api
  6.0

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ß!

Kommentare (2)