web-dev-qa-db-fra.com

Dépendance Maven pour l'API Servlet 3.0?

Comment puis-je dire à Maven 2 de charger l'API Servlet 3.0?

J'ai essayé:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0</version>
    <scope>provided</scope>
</dependency>

J'utilise http://repository.jboss.com/maven2/ mais quel référentiel serait correct?

Addendum:

Il fonctionne avec une dépendance pour l'ensemble de l'API Java EE 6 et les paramètres suivants:

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

Je préférerais uniquement ajouter l'API Servlet comme dépendance, mais "Brabster" a peut-être raison de supposer que des dépendances distinctes ont été remplacées par Java EE 6 Profiles. Existe-t-il une source qui confirme cette hypothèse?

223
deamon

Je préférerais uniquement ajouter l'API Servlet en tant que dépendance,

Pour être honnête, je ne suis pas sûr de comprendre pourquoi mais peu importe ...

Brabster Les dépendances séparées ont été remplacées par Java Profils EE 6. Existe-t-il une source qui confirme cette hypothèse?

Le référentiel maven de Java.net offre en effet l'artefact suivant pour WebProfile:

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

Ce fichier jar comprend les versions 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 et JSR-250.

Mais à ma connaissance, rien ne permet de dire que ces API ne seront pas distribuées séparément (dans le référentiel Java.net ou ailleurs). Par exemple (ok, cela peut être le cas), l'API JSF 2.0 est disponible séparément (dans le référentiel Java.net):

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

Et en fait, vous pouvez obtenir javax.servlet-3.0.jar de et l’installer dans votre propre référentiel.

113
Pascal Thivent

Cela semble être ajouté récemment:

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

Ou vous pouvez utiliser le référentiel central Maven avec l'API Servlet 3.0 également fournie pour Tomcat Server 7.0.X

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

à partir d'ici: http://repo2.maven.org/maven2/org/Apache/Tomcat/tomcat-servlet-api/7.0.21/

37
cuh

Malheureusement, l'ajout de javaeeweb) -api en tant que dépendance ne vous donne pas le Javadoc ou la source de l'API Servlet pour les parcourir à partir de l'EDI. C'est également le cas pour toutes les autres dépendances (JPA, EJB, ...). Si vous avez besoin de l'API Servlet sources/javadoc, vous pouvez ajouter ce qui suit à votre pom.xml (fonctionne au moins pour JBoss & Glassfish):

Dépôt:

<repository>
  <id>jboss-public-repository-group</id>
  <name>JBoss Public Repository Group</name>
  <url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>

Dépendance:

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

J'ai complètement supprimé javaee-api de mes dépendances et l'ai remplacé par les parties discrètes (javax.ejb, javax.faces, ...) pour obtenir les sources et les Javadocs de toutes les parties de Java EE 6.

--- (EDIT:

Voici la dépendance équivalente à Glassfish (bien que les deux dépendances devraient fonctionner, quel que soit le serveur d'applications que vous utilisez).

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

Voici ce que j'utilise. Tous sont situés dans le centre et ont des sources.

Pour Tomcat 7 (Java 7, Servlet 3.0)

Remarque - Les API Servlet, JSP et EL sont fournies dans Tomcat. Seul JSTL (si utilisé) doit être fourni avec l'application Web.

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

Pour 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

Le projet Apache Geronimo fournit une dépendance de l'API Servlet 3.0 au référentiel Maven Central:

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

Juste pour les nouveaux arrivants.

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

J'ai trouvé un exemple de POM pour le API Servlet 3.0 sur DZone à partir de septembre.

Nous vous suggérons d’utiliser le référentiel Java.net à l’adresse http://download.Java.net/maven/2/

Il y a Java API EE dedans, par exemple http://download.Java.net/maven/2/javax/javaee-web-api/6.0/ avec POM qui ressemblent à ce que vous recherchez, par exemple:

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

J'imagine que les conventions de version pour les API ont été modifiées pour correspondre à la version de la spécification EE globale (c'est-à-dire Java EE 6 vs. Servlets 3.0) dans le cadre des nouveaux "profils". En regardant dans le fichier JAR, on voit que tout le contenu de la servlet 3.0 est là. Prendre plaisir!

4
brabster

Un moyen pratique (recommandé par JBoss) d’inclure Java dépendances EE 6 est présenté ci-dessous. En conséquence, les dépendances sont placées séparément (pas toutes dans un fichier jar comme dans javaee-web-api), les fichiers sources et les javadocs des bibliothèques sont disponibles au téléchargement à partir du référentiel maven.

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

Pour inclure uniquement les dépendances individuelles, dependencyManagement section et scope import peuvent être utilisés:

    <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