Comment 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?
Addenda:
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ère ajouter uniquement l'API Servlet en tant que dépendance, mais "Brabster" a peut-être raison de dire que des dépendances distinctes ont été remplacées par des profils Java EE 6. Y a-t-il une source qui confirme cette hypothèse?
java
maven-2
servlets
jakarta-ee
démon
la source
la source
servlet-api
àjavax.servlet-api
. Perdu une demi-heure de "débogage" ...: /Réponses:
Pour être honnête, je ne suis pas sûr de comprendre pourquoi mais tant pis ...
Le référentiel maven de Java.net offre en effet l'artefact suivant pour le WebProfile:
Ce pot comprend 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.
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 un cas particulier), l'API JSF 2.0 est disponible séparément (dans le référentiel java.net):
Et en fait, vous pourriez obtenir
javax.servlet-3.0.jar
de là et l' installer dans votre propre référentiel.la source
javaee-web-api
ne contient que des stubs de méthode (pas de code d'octet). Vous ne pouvez pas utiliser cette dépendance en dehors de laprovided
portée, c'est pourquoi je préfère la suggestion de Sa'ad.<version>7.0</version>
Cela semble avoir été ajouté récemment:
http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/
la source
servlet-api
? Parce que c'est amusant d'ajouter<excludes>
pour l'ancien artifactId (afin d'éviter d'avoir à la fois l'ancienne et la nouvelle API de servlet sur votre chemin de classe si l'une de vos dépendances dépend toujours de l'ancienne)? :)javax.servlet-api-3.1.0
. Assurez-vous simplement que votre conteneur Servlet peut gérer cette version. Par exemple, la version 8 de Tomcat peut gérer 3.1 .Ou vous pouvez utiliser le référentiel Central Maven avec l'API Servlet 3.0 qui est également fourni pour Tomcat Server 7.0.X
à partir d'ici: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/
la source
Voici ce que j'utilise. Tous ces éléments se trouvent 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 (s'il est utilisé) doit être fourni avec l'application Web.
Pour Tomcat 8 (Java 8, Servlet 3.1)
la source
Malheureusement, l'ajout de javaee- (web) -api en tant que dépendance ne vous donne pas le Javadoc ou la source à l'API Servlet pour les parcourir à partir de l'IDE. C'est également le cas pour toutes les autres dépendances (JPA, EJB, ...) Si vous avez besoin des sources de l'API Servlet / javadoc, vous pouvez ajouter ce qui suit à votre pom.xml (fonctionne au moins pour JBoss & Glassfish):
Dépôt:
Dépendance:
J'ai complètement supprimé le javaee-api de mes dépendances et l'ai remplacé par les parties discrètes (javax.ejb, javax.faces, ...) pour obtenir les sources et Javadocs pour toutes les parties de Java EE 6.
ÉDITER:
Voici la dépendance équivalente de Glassfish (bien que les deux dépendances devraient fonctionner, quel que soit le serveur d'applications que vous utilisez).
la source
1.0.0.Beta2
, si c'est la version3.0
dont nous avons besoin? Cela le rend complexe.Le projet Apache Geronimo fournit une dépendance de l'API Servlet 3.0 sur le référentiel Maven Central:
la source
Juste pour les nouveaux arrivants.
la source
J'ai trouvé un exemple de POM pour l' API Servlet 3.0 sur DZone à partir de septembre.
Nous vous suggérons d'utiliser le dépôt java.net, à http://download.java.net/maven/2/
Il y a des API Java EE dedans, par exemple http://download.java.net/maven/2/javax/javaee-web-api/6.0/ avec POM qui semblent être ce que vous cherchez, par exemple :
Je suppose 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 JAR, on dirait que tous les trucs de servlet 3.0 sont là. Prendre plaisir!
la source
Un moyen pratique (recommandé par JBoss) d'inclure les dépendances Java EE 6 est illustré ci-dessous. En conséquence, les dépendances sont placées séparément (pas toutes dans un seul pot comme dans javaee-web-api), les fichiers source et javadocs des bibliothèques sont disponibles pour téléchargement à partir du référentiel maven.
Pour inclure uniquement les dépendances individuelles, la
dependencyManagement
section et la portéeimport
peuvent être utilisées:la source
Essayez ce code ...
la source