Servlet 3.0 API的Maven依赖关系?

我如何告诉Maven 2加载Servlet 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> 

我宁愿只添加Servlet API作为依赖关系,但“Brabster”可能是正确的,单独的依赖关系已被Java EE 6configuration文件取代。 有一个来源证实了这个假设吗?

我宁愿只添加Servlet API作为依赖项,

说实话,我不知道为什么,但不介意…

Brabster分离的依赖关系已被Java EE 6configuration文件所取代。 有一个来源证实了这个假设吗?

Java.net的maven仓库确实为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> 

这个jar包括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。

但据我所知,没有什么可以说这些API不会分开分发(在java.net资料库或其他地方)。 例如(好的,可能是特定情况),JSF 2.0 API可以单独使用(在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存储库和Servlet 3.0 API,该API也是为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> 

从这里: http : //repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/

不幸的是,将javaee-(web)-api作为依赖项添加,并不会为您提供Javadoc或Source以供Servlet Api从IDE中浏览它们。 如果您需要Servlet API sources / javadoc,则可以将以下内容添加到您的pom.xml(至less适用于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.faces,…)replace它以获取Java EE 6所有部分的源代码和Javadoc。

编辑:

这里是相当于Glassfish的依赖关系(尽pipe这两个依赖关系都可以工作,不pipe你使用哪个应用服务器)。

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

这是我使用的。 所有这些都在中央,并有来源。

对于Tomcat 7(Java 7,Servlet 3.0)

注 – Tomcat中提供了Servlet,JSP和EL API。 只有JSTL(如果使用)需要与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> 

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

Apache Geronimo项目在Maven Central中提供了一个Servlet 3.0 API依赖关系:

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

从9月份开始,我在DZone上为Servlet 3.0 APIfind了一个示例POM。

build议您使用java.net库, url为http://download.java.net/maven/2/

那里有Java EE的API,例如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与Servlets 3.0)的版本,作为新“configuration文件”的一部分。 查看JAR,看起来像所有的3.0 servlet的东西在那里。 请享用!

只是为了新人。

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

下面演示一个方便的方法(JBoss推荐)来包含Java EE 6依赖关系。 因此,依赖关系是分开放置的(不像javaee-web-api中的所有jar文件),可以从maven仓库下载库的源文件和javadoc。

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

要仅包含单个依赖项,可以使用dependencyManagement部分和作用域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>