it-swarm.com.de

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 benutze http://repository.jboss.com/maven2/ aber welches Repository wäre korrekt?

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" kann richtig sein, dass separate Abhängigkeiten durch Java EE 6-Profile ersetzt wurden. Gibt es eine Quelle, die diese Annahme bestätigt?

223
deamon

Ich würde es vorziehen, nur die Servlet-API als Abhängigkeit hinzuzufügen,

Um ehrlich zu sein, ich bin mir nicht sicher warum, aber egal ...

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

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

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

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

Meines Wissens lässt jedoch nichts zu, dass diese APIs nicht separat verteilt werden (im Java.net-Repository oder anderswo). Zum Beispiel (ok, es kann ein besonderer Fall sein) ist die JSF 2.0-API separat erhältlich (im Java.net-Repository):

<dependency>
   <groupId>com.Sun.faces</groupId>
   <artifactId>jsf-api</artifactId>
   <version>2.0.0-b10</version>
   <scope>provided</scope>
</dependency>

Und eigentlich könnte man javax.servlet-3.0.jar from there und installiere es in deinem eigenen Repository.

113
Pascal Thivent

Dies scheint vor kurzem hinzugefügt worden zu sein:

http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
</dependency>
455
Sa'ad

Oder Sie können das Central Maven Repository mit der Servlet 3.0-API verwenden, die auch für Tomcat Server 7.0.X bereitgestellt wird

    <dependency>
        <groupId>org.Apache.Tomcat</groupId>
        <artifactId>Tomcat-servlet-api</artifactId>
        <version>7.0.21</version>
        <scope>provided</scope>
    </dependency>

von hier: http://repo2.maven.org/maven2/org/Apache/Tomcat/tomcat-servlet-api/7.0.21/

37
cuh

Wenn Sie die JavaeeWeb-) API als Abhängigkeit hinzufügen, erhalten Sie leider weder Javadoc noch Source für die Servlet-API, um sie in der IDE zu durchsuchen. Dies gilt auch für alle anderen Abhängigkeiten (JPA, EJB, ...). Wenn Sie die Servlet-API sources/javadoc benötigen, können Sie Ihrer pom.xml Folgendes hinzufügen (funktioniert zumindest für 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>

Abhängigkeit:

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

Ich habe die Java-API vollständig aus meinen Abhängigkeiten entfernt und durch die diskreten Teile (javax.ejb, javax.faces, ...) ersetzt, um die Quellen und Javadocs für alle Teile von Java EE 6.

--- (EDIT:

Hier ist die entsprechende Glassfish-Abhängigkeit (obwohl beide Abhängigkeiten funktionieren sollten, unabhängig davon, welchen Anwendungsserver Sie verwenden).

<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.servlet</artifactId>
  <version>3.0</version>
  <scope>provided</scope>
</dependency>
24
Ingo Fischer

Hier ist was ich benutze. Alle diese sind in der Zentrale und haben Quellen.

Für Tomcat 7 (Java 7, Servlet 3.0)

Hinweis - Servlet-, JSP- und EL-APIs werden in Tomcat bereitgestellt. Nur JSTL (falls verwendet) muss mit der Web-App gebündelt werden.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.el</groupId>
    <artifactId>javax.el-api</artifactId>
    <version>2.2.4</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Für Tomcat 8 (Java 8, Servlet 3.1)

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.el</groupId>
    <artifactId>javax.el-api</artifactId>
    <version>3.0.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
23
rustyx

Das Apache Geronimo-Projekt bietet eine Servlet 3.0-API-Abhängigkeit vom Maven Central-Repository:

<dependency>
    <groupId>org.Apache.geronimo.specs</groupId>
    <artifactId>geronimo-servlet_3.0_spec</artifactId>
    <version>1.0</version>
</dependency>
9
Patrick Crocker

Nur für Neulinge.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
4
fraer

Ich habe ab September ein Beispiel-POM für die Servlet 3.0 API auf DZone gefunden.

Schlagen Sie vor, dass Sie das Java.net-Repository unter http://download.Java.net/maven/2/ verwenden

Es gibt Java EE APIs, zum Beispiel http://download.Java.net/maven/2/javax/javaee-web-api/6.0/ mit POM, die so aussehen, als wären sie das, wonach Sie suchen, zum Beispiel:

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-web-api</artifactId>
  <version>6.0</version>
</dependency>

Ich vermute, dass die Versionskonventionen für die APIs geändert wurden, um mit der Version der gesamten EE-Spezifikation übereinzustimmen (dh Java EE 6 vs. Servlets 3.0) als Teil der neuen "Profile"). Schaut man in die JAR, sieht es so aus, als ob das ganze 3.0 Servlet-Zeug drin ist.

4
brabster

Eine bequeme Möglichkeit (JBoss empfohlen), Java EE 6-Abhängigkeiten einzubeziehen, wird unten gezeigt. Als Ergebnis werden Abhängigkeiten separat platziert (nicht alle in einem Jar wie in Java-Web-API), Quelldateien und javadocs der bibliotheken können vom maven repository heruntergeladen werden.

<properties>
    <jboss.javaee6.spec.version>2.0.0.Final</jboss.javaee6.spec.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-web-6.0</artifactId>
        <version>${jboss.javaee6.spec.version}</version>
        <scope>provided</scope>
        <type>pom</type>
    </dependency>
</dependencies>

Um nur einzelne Abhängigkeiten einzubeziehen, können dependencyManagement section und scope import verwendet werden:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.spec</groupId>
                <artifactId>jboss-javaee6-specs-bom</artifactId>
                <version>${jboss.javaee6.spec.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- No need specifying version and scope. It is defaulted to version and scope from Bill of Materials (bom) imported pom. -->
        <dependency>
            <groupId>org.jboss.spec.javax.servlet</groupId>
            <artifactId>jboss-servlet-api_3.0_spec</artifactId>
        </dependency>
    </dependencies>
3
Andrey