Ce que les dépendances maven besoins de Servlet, JSP et JSTL dans Java EE 7?
Je veux utiliser le SDK de Java EE 7, Glassfish 4 et Maven.
Est-il correct? S'il vous plaît, attirer l'attention sur les étendues.
1. Pour les servlets:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
2. JSP sans standart balises et sans JSTL:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
3. Pour les JSP standard tag "c:"
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
4. Pour les JSP avec JSTL
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
Savez-vous de la spécification où cette information contient?
Vous êtes mal comprendre le sens de "standard" taglibs. Cela ne signifie pas qu'il ne contient que c balises. C'est en fait l'ensemble de la JSTL 1.1.2 mise en œuvre de Apache. Ensuite, vous avez un autre JSTL 1.2 mise en œuvre qui est l'implémentation de référence (généralement, celui de Sun/Oracle). Ils seront évidemment en conflit les uns avec les autres. En gros, vous vous retrouvez avec deux JSTL implémentations. Vous devriez être de déclarer un seul d'entre eux. Notez que Glassfish déjà navires avec elle hors de la boîte, de sorte que le champ d'application doit évidemment être mis à "fourni".
OriginalL'auteur Aleks Ya | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas être l'ajout de ces dépendances de votre projet. Les instanciations de la spécification J2EE, comme les servlets, devraient être fournies par le serveur d'application de la runtime.
Dans Eclipse, Pour ajouter le Serveur d'Exécution de votre serveur d'applications. Cliquez-droit sur le projet et sélectionnez Propriétés. Puis Build Path > Add Library > Server Runtime.
Votre exactement! Je pensais Tomcat quand j'ai dit à exclure JSTL à partir de cette liste. En dehors de la JSTL erreur j'essayais simplement de faire remarquer que vous devez compter sur votre serveur pour ces bibliothèques, en particulier étant donné que vous pouvez créer des conflits de version.
Cette réponse est totalement erronée. Maven construit des applications web sans aucune référence à l'environnement d'exécution du serveur, n'a donc absolument besoin d'informations sur les Api sont disponibles, selon le serveur que vous êtes en cours d'exécution.
OriginalL'auteur Kevin Bowersox
Il existe une variété d'options. Comme suggéré dans la question, une approche consiste à importer l'ensemble de l'API Java EE. Mais vous pouvez aussi être plus sélectif. Vous pouvez au lieu de simplement inclure la servlet API (c'est pour la servlet API 3.0.1; les versions plus récentes sont disponibles pour le même objet de données, mais les anciennes versions d'utiliser l'artefact id
servlet-api
place):La question implique que la JSTL paquet tire aussi dans la JSP dépendances; ce n'est pas le cas: si vous avez besoin d'utiliser l'API JSP à tous, vous avez besoin d'une dépendance de celle-ci (mais il est intéressant de noter que vous n'avez pas nécessairement besoin, tel que discuté à cette question). Vous devez utiliser la version correcte de l'API JSP qui correspond à la Servlet API de la version que vous utilisez, donc pour la servlet API 3.0.1 que je montre ci-dessus, vous devez utiliser 2.2:
Comme pour la Servlet API, il y a eu des changements dans la dépendance de données de l'API JSP; dans ce cas, pour les versions antérieures à la version 2.0 de l'id de groupe est juste
javax.servlet
, tandis que pour les versions plus récentes que 2.2 l'artefact id a changé dejavax.servlet.jsp-api
.Pour JSTL, vous devez sûrement être l'aide de la version 1.2. La nouvelle norme emplacement pour cette version est:
même si l'ancien emplacement comme indiqué dans la question continue à fonctionner correctement. Sans doute, toute les futures mises à jour apportées à cette bibliothèque qu'ils seront inclus avec ce groupe/artefact ID, comme cela semble être conçu pour s'adapter de façon appropriée avec tous le autre plus récente des artefacts. Contrairement aux autres objets, JSTL n'est pas fournie par le conteneur, de sorte que la portée ne doit pas être réglé sur "fourni" comme pour les autres.
OriginalL'auteur Jules