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



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



пробовал:



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


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



дополнение:



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



<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 профилей. Есть источник, который подтверждает это предположение?

629   10  

10 ответов:

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

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

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

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

<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 Servlet 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 (хотя обе зависимости должны работать, независимо от того, какой сервер приложений вы используете).

<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 для Servlet 3.0 API на 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>

Comments

    Ничего не найдено.