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>
サーブレットAPIを依存関係としてのみ追加したいのですが、別々の依存関係がJava EE 6プロファイルに置き換えられたのは「Brabster」のほうが正しいかもしれません。この仮定を裏付ける情報源はありますか?
サーブレットAPIを依存関係としてのみ追加したいのですが、
正直なところ、私はなぜ理解するのかわからないが、気にしないでください...
Brabster 個別の依存関係は、Java EE 6プロファイルに置き換えられました。この仮定を裏付ける情報源はありますか?
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>
そして実際には、 there から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>
あるいは、Tomcat Server 7.0.X用にも提供されているServlet 3.0 APIと共にCentral Mavenリポジトリを使用することもできます。
<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/
残念ながら、依存関係としてjavaeeweb)-apiを追加しても、IDE内からそれらを参照するためのJavadocまたはSourceをServlet Apiに渡すことはできません。これは、他のすべての依存関係(JPA、EJBなど)にも当てはまります。サーブレットAPIのsources/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を削除し、Java EE 6のすべての部分のためのソースとJavadocを得るために個別の部分(javax.ejb、javax.faces、...)と置き換えました。
---(編集:
これは同等のGlassfish依存関係です(どちらの依存関係を使用しても、どちらの依存関係も機能するはずです)。
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
これが私が使っているものです。これらはすべて中央にあり、情報源があります。
Tomcat 7(Java 7、Servlet 3.0)の場合
注 - サーブレット、JSP、およびEL APIはTomcatで提供されています。 Webアプリケーションにバンドルする必要があるのは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、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>
初心者向けです。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
9月から DZone上のServlet 3.0 API のPOMの例が見つかりました。
Java.netリポジトリを使用することをお勧めします。 http://download.Java.net/maven/2/
そこにはJava EE APIがあります。例えば、POMでは http://download.Java.net/maven/2/javax/javaee-web-api/6.0/ になります。例えば、
<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サーブレットのものがすべてそこに入っているように見えます。楽しい!
Java EE 6の依存関係を含めるための便利な方法(JBoss推奨)を以下に示します。その結果、依存関係は別々に配置され(javaee-web-apiのように1つのjarファイルにまとめられているわけではありません)、ライブラリのソースファイルとjavadocは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
セクションとスコープ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>