¿Cómo puedo decirle a Maven 2 que cargue la API Servlet 3.0?
Lo intenté:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Uso http://repository.jboss.com/maven2/ pero ¿qué repositorio sería correcto?
Apéndice:
Funciona con una dependencia para toda la API Java EE 6 y la siguiente configuración:
<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>
Preferiría agregar solo la API de Servlet como dependencia, pero "Brabster" puede tener razón en que las dependencias separadas han sido reemplazadas por Java EE 6 Profiles. ¿Hay alguna fuente que confirme esta suposición?
java
maven-2
servlets
jakarta-ee
deamon
fuente
fuente
servlet-api
ajavax.servlet-api
. Perdió media hora "depuración" ...: /Respuestas:
Para ser honesto, no estoy seguro de entender por qué, pero no importa ...
El repositorio maven de Java.net ofrece el siguiente artefacto para el Perfil Web:
Este frasco incluye 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.
Pero que yo sepa, nada permite decir que estas API no se distribuirán por separado (en el repositorio java.net o en otro lugar). Por ejemplo (ok, puede ser un caso particular), la API JSF 2.0 está disponible por separado (en el repositorio java.net):
Y en realidad, podría obtenerlo
javax.servlet-3.0.jar
desde allí e instalarlo en su propio repositorio.fuente
javaee-web-api
solo contiene stubs de método (sin código de byte). No puede usar esta dependencia fuera delprovided
alcance, por eso prefiero la sugerencia de Sa'ad.<version>7.0</version>
Esto parece ser agregado recientemente:
http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/
fuente
servlet-api
? ¿Porque es divertido agregar<excludes>
el viejo artifactId (para evitar que tanto la API de servlet antigua como la nueva aparezcan en su classpath si una de sus dependencias todavía depende de la antigua)? :)javax.servlet-api-3.1.0
. Solo asegúrese de que su contenedor de Servlet pueda manejar esa versión. Por ejemplo, la Versión 8 de Tomcat puede manejar 3.1 .O puede usar el repositorio Central Maven con la API Servlet 3.0 que también se proporciona para el servidor Tomcat 7.0.X
desde aquí: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/
fuente
Aquí está lo que uso. Todos estos están en la Central y tienen fuentes.
Para Tomcat 7 (Java 7, Servlet 3.0)
Nota: Servlet, JSP y EL API se proporcionan en Tomcat. Solo JSTL (si se usa) debe incluirse con la aplicación web.
Para Tomcat 8 (Java 8, Servlet 3.1)
fuente
Desafortunadamente, agregar javaee- (web) -api como una dependencia no le da el Javadoc o la Fuente a la API de Servlet para explorarlos desde el IDE. Este también es el caso para todas las demás dependencias (JPA, EJB, ...) Si necesita las fuentes de API de Servlet / javadoc, puede agregar lo siguiente a su pom.xml (funciona al menos para JBoss y Glassfish):
Repositorio:
Dependencia:
Eliminé por completo el javaee-api de mis dependencias y lo reemplacé con las partes discretas (javax.ejb, javax.faces, ...) para obtener las fuentes y Javadocs para todas las partes de Java EE 6.
EDITAR:
Aquí está la dependencia equivalente de Glassfish (aunque ambas dependencias deberían funcionar, sin importar el servidor de aplicaciones que use).
fuente
1.0.0.Beta2
, si es la versión3.0
que necesitamos? Esto lo hace complejo.El proyecto Apache Geronimo proporciona una dependencia de API Servlet 3.0 en el repositorio de Maven Central:
fuente
Solo para los recién llegados.
fuente
Encontré un POM de ejemplo para la API Servlet 3.0 en DZone desde septiembre.
Sugiero que use el repositorio java.net, en http://download.java.net/maven/2/
Hay API de Java EE allí, por ejemplo http://download.java.net/maven/2/javax/javaee-web-api/6.0/ con POM que parecen ser lo que buscas, por ejemplo :
Supongo que las convenciones de versión para las API se han cambiado para que coincidan con la versión de la especificación EE general (es decir, Java EE 6 vs. Servlets 3.0) como parte de los nuevos 'perfiles'. Mirando en el JAR, parece que todas las cosas del servlet 3.0 están ahí. ¡Disfrutar!
fuente
A continuación se muestra una forma conveniente (se recomienda JBoss) para incluir dependencias Java EE 6. Como resultado, las dependencias se colocan por separado (no todas en un solo jar como en javaee-web-api), los archivos fuente y los javadocs de las bibliotecas están disponibles para descargar desde el repositorio maven.
Para incluir solo dependencias individuales, se pueden usar la
dependencyManagement
sección y el alcanceimport
:fuente
Prueba este código ...
fuente