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