Maven dependencia para Servlet 3.0 API?


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

Utilizo http://repository.jboss.com/maven2 / pero ¿qué repositorio sería correcto?

Adición:

Funciona con una dependencia para toda la API de Java EE 6 y las siguientes configuraciones:

<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 dependencias separadas han sido reemplazadas por perfiles Java EE 6. Hay un fuente que confirma esta suposición?

Author: Betlista, 2009-12-30

10 answers

Preferiría añadir solo la API de Servlet como dependencia,

Para ser honesto, no estoy seguro de entender por qué, pero no importa...

Brabster dependencias separadas han sido reemplazadas por perfiles Java EE 6. ¿Hay alguna fuente que confirme esta suposición?

El repositorio maven desde Java.net indeed ofrece el siguiente artefacto para el 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>

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 java.net repositorio o en otro lugar). Por ejemplo (ok, puede ser un caso particular), la API JSF 2.0 está disponible por separado (en el java.net repositorio):

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

Y en realidad, podrías obtener javax.servlet-3.0.jar desde allí e instalarlo en tu propio repositorio.

 110
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:53

Esto parece haber sido añadido 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>
 449
Author: Sa'ad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-24 16:32:33

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

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

 36
Author: cuh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-26 13:23:11

Desafortunadamente, agregar la api javaee-(web)-como dependencia no le da el Javadoc o el Código Fuente a la Api Servlet para explorarlos desde el IDE. Este es también el caso para todas las demás dependencias (JPA, EJB,...) Si necesita el Servlet API sources / javadoc, puede agregar lo siguiente a su pom.xml (funciona al menos para JBoss & 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 la javaee-api de mis dependencias y la reemplacé con las partes discretas (javax.ejb, javax.cara, ...) 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 qué servidor de aplicaciones use).

<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.servlet</artifactId>
  <version>3.0</version>
  <scope>provided</scope>
</dependency>
 24
Author: ifischer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-14 20:43:46

Esto es lo que 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 se debe incluir JSTL (si se usa) 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>
 19
Author: rustyx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-27 09:10:22

El proyecto Apache Geronimo proporciona una dependencia de la API Servlet 3.0 en el repositorio Central Maven:

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-servlet_3.0_spec</artifactId>
    <version>1.0</version>
</dependency>
 9
Author: Patrick Crocker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-26 13:22:55

Encontré un ejemplo de POM para la API Servlet 3.0 en DZone de septiembre.

Le sugerimos que utilice el java.net repo, at 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:

<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 especificaciones generales de EE (es decir, Java EE 6 vs. Servlets 3.0) como parte de los nuevos 'perfiles'. Mirando en el FRASCO, parece que todas las cosas servlet 3.0 están ahí. ¡Que lo disfrutes!

 4
Author: brabster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-26 13:22:59

Solo para los recién llegados.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
 4
Author: fraer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-14 14:41:46

Una manera conveniente (JBoss recomendado) para incluir dependencias de Java EE 6 se muestra a continuación. Como resultado, las dependencias se colocan por separado (no todas en un jar como en javaee-web-api), los archivos fuente y los javadocs de las bibliotecas están disponibles para descargar desde el repositorio 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 se puede usar la sección y el alcance import:

    <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
Author: Andrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-14 20:43:56

Pruebe este código...

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
    </dependency>
 -3
Author: Josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-20 06:51:32