Зависимость Maven для API сервлета 3.0?

Как я могу сказать Maven 2 загрузить API сервлета 3.0?

пробовал:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0</version>
    <scope>provided</scope>
</dependency>

Я использую http://repository.jboss.com/maven2/ но какой репозиторий будет правильным?

дополнение:

он работает с зависимостью для всего API Java EE 6 и следующих настроек:

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

Я бы предпочел добавить только API сервлета в качестве зависимости, но "Brabster" может быть прав, что отдельные зависимости были заменены профилями Java EE 6. Есть ли источник, подтверждающий это предположение?

10 ответов


Я бы предпочел добавить API сервлета только как зависимость,

честно говоря, я не уверен, что понимаю, почему, но неважно...

Brabster отдельные зависимости были заменены профилями Java EE 6. Есть ли источник, подтверждающий это предположение?

репозиторий maven из Java.net indeed предлагает следующий артефакт для 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>

эта банка включает в себя Сервлет 3.0, EJB с лайт 3.1, в JPA 2.0, ОСП 2.2, Эл 1.2, тегов JSTL 1.2, для JSF 2.0, наша 1.1, в JSR-45, в JSR-250.

но, насколько мне известно, ничто не позволяет сказать, что эти API не будут распространяться отдельно (в java.net репозиторий или где-то еще). Например (ок, это может быть конкретный случай), API JSF 2.0 доступен отдельно (в java.net repository):

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

и на самом деле, вы могли бы сделать javax.servlet-3.0.jar С здесь и установить его в свой собственный хранилище.


это, кажется, добавлено недавно:

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>

или вы можете использовать центральный репозиторий Maven с API сервлета 3.0, который также предоставляется для сервера Tomcat 7.0.X

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>7.0.21</version>
        <scope>provided</scope>
    </dependency>

отсюда:http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/


к сожалению, добавление javaee-(web) - api в качестве зависимости не дает вам Javadoc или источник API сервлета для просмотра их из среды IDE. Это также относится ко всем другим зависимостям (JPA, EJB,...) Если вам нужны источники API сервлета / javadoc, вы можете добавить следующее в свой pom.xml (работает, по крайней мере, для JBoss&Glassfish):

репозитория:

<repository>
  <id>jboss-public-repository-group</id>
  <name>JBoss Public Repository Group</name>
  <url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>

зависимость:

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

я полностью удалил javaee-api из моего зависимости и заменили его дискретными частями (javax.ejb, javax.многоликий. ,..) чтобы получить источники и Javadocs для всех частей Java EE 6.

EDIT:

вот эквивалентная зависимость Glassfish (хотя обе зависимости должны работать, независимо от того, какой appserver вы используете).

<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.servlet</artifactId>
  <version>3.0</version>
  <scope>provided</scope>
</dependency>

вот что я использую. Все они находятся в центре и имеют источники.

Для Tomcat 7 (Java 7, Сервлет 3.0)

Примечание-сервлет, JSP и El API предоставляются в Tomcat. Только JSTL (если используется) должен быть в комплекте с веб-приложением.

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

Для Tomcat 8 (Java 8, Сервлет 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>

проект Apache Geronimo предоставляет зависимость API сервлета 3.0 от центрального репозитория Maven:

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-servlet_3.0_spec</artifactId>
    <version>1.0</version>
</dependency>

Я нашел пример POM для API сервлета 3.0 на DZone С сентября.

предложите вам использовать java.net РЕПО, at http://download.java.net/maven/2/

там есть API Java EE, например http://download.java.net/maven/2/javax/javaee-web-api/6.0/ с POM, которые выглядят так, как будто они могут быть тем, что вам нужно, например:

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-web-api</artifactId>
  <version>6.0</version>
</dependency>

Я предполагаю, что соглашения о версиях для API имеют был изменен, чтобы соответствовать версии общей спецификации EE (т. е. Java EE 6 против сервлетов 3.0) как часть новых "профилей". Глядя в банку, похоже, что все сервлеты 3.0 находятся там. Наслаждайтесь!


только для новичков.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

удобный способ (рекомендуется JBoss) для включения зависимостей Java EE 6 показан ниже. В результате зависимости размещаются отдельно (не все в одном jar, как в javaee-web-api), исходные файлы и javadocs библиотек доступны для загрузки из репозитория 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>

чтобы включить только отдельные зависимости, и области 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>

попробуйте этот код...

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
    </dependency>