如何告诉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 6 Profiles取代。有消息来源证实这一假设吗?
从9月份开始,我在DZone上找到了Servlet 3.0 API的POM示例。
建议您在http://download.java.net/maven/2/上使用java.net回购
那里有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 vs. Servlets 3.0),作为新“配置文件”的一部分。在JAR中,似乎所有3.0 servlet的东西都在里面。享受吧!
不幸的是,将javaee-(web)- Api添加为依赖项并不能让您从IDE中浏览Javadoc或Servlet Api的Source。对于所有其他依赖项(JPA、EJB,……)也是如此。
如果你需要Servlet 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>
我完全从依赖项中删除了javae -api,并将其替换为独立的部分(javax. api)。ejb、javax。faces,…)来获取Java EE 6所有部分的源代码和Javadocs。
编辑:
这里是等效的Glassfish依赖项(尽管无论你使用什么应用服务器,这两个依赖项都应该工作)。
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
下面演示了一种包含Java EE 6依赖项的方便方法(推荐使用JBoss)。因此,依赖关系是分开放置的(不像javaee-web-api那样全部放在一个jar中),库的源文件和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>
要只包含单个依赖项,可以使用dependencyManagement节和作用域导入:
<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>