java - httpservletresponse - ¿Dependencia de Maven para Servlet 3.0 API?
maven repository (10)
Prefiero agregar solo la API Servlet como dependencia,
Para ser honesto, no estoy seguro de entender por qué, pero no importa ...
Brabster dependencias separadas de Brabster han sido reemplazadas por perfiles Java EE 6. ¿Hay alguna fuente que confirme este supuesto?
El repositorio principal de Java.net ofrece el siguiente artefacto para el perfil web:
<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>
Este contenedor 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 de 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 de java.net):
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.0-b10</version>
<scope>provided</scope>
</dependency>
Y, de hecho, puedes obtener javax.servlet-3.0.jar
desde there e instalarlo en tu propio repositorio.
¿Cómo puedo decirle a Maven 2 que cargue la API de Servlet 3.0?
Lo intenté:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Utilizo http://repository.jboss.com/maven2/ pero ¿qué repositorio sería correcto?
Apéndice:
Funciona con una dependencia para toda la API de 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 solo agregar la API Servlet como dependencia, pero "Brabster" puede estar en lo correcto al decir que las dependencias separadas han sido reemplazadas por los perfiles Java EE 6 ¿Hay alguna fuente que confirme este supuesto?
A continuación se muestra una forma conveniente (se recomienda JBoss) para incluir las dependencias de Java EE 6. Como resultado, las dependencias se colocan por separado (no todas en un jar como en javaee-web-api), los archivos de origen y javadocs de las bibliotecas están disponibles para descargar desde el repositorio de 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>
Para incluir solo dependencias individuales, dependencyManagement
sección dependencyManagement
y la import
alcance se pueden usar:
<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>
Desafortunadamente, agregar el javaee- (web) -api como una dependencia no le otorga el Javadoc o la Fuente a la Api de Servlet para que los explore desde el IDE. Este es también el caso de todas las demás dependencias (JPA, EJB, ...) Si necesita las fuentes / javadoc de la API del Servlet, puede agregar lo siguiente a su pom.xml (funciona al menos para JBoss y Glassfish):
Repositorio:
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
Dependencia:
<!-- 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>
Eliminé completamente 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, independientemente del servidor de aplicaciones que use).
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
El proyecto Apache Geronimo proporciona una dependencia de la API Servlet 3.0 en el repositorio de Maven Central:
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_3.0_spec</artifactId>
<version>1.0</version>
</dependency>
Encontré un ejemplo de POM para la API Servlet 3.0 en DZone a partir de septiembre.
Le sugerimos que use el repositorio java.net, en http://download.java.net/maven/2/
Hay API de Java EE ahí, por ejemplo, http://download.java.net/maven/2/javax/javaee-web-api/6.0/ con POM que parece ser lo que buscas, por ejemplo :
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
</dependency>
Supongo que las convenciones de versión para las API se han cambiado para que coincidan con la versión de la especificación general de EE (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!
Esto es lo que yo uso. Todos estos están en la Central y tienen fuentes.
Para Tomcat 7 (Java 7, Servlet 3.0)
Nota: las API de Servlet, JSP y EL se proporcionan en Tomcat. Solo JSTL (si se usa) debe incluirse con la aplicación 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>
Para 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>
Esto parece ser agregado recientemente:
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>
O puede usar el repositorio central de Maven con la API Servlet 3.0, que también se proporciona para 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>
desde aquí: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/
Prueba este código ...
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
Sólo para los recién llegados.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>