web-dev-qa-db-ja.com

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>

サーブレットAPIを依存関係としてのみ追加したいのですが、別々の依存関係がJava EE 6プロファイルに置き換えられたのは「Brabster」のほうが正しいかもしれません。この仮定を裏付ける情報源はありますか?

222
deamon

サーブレット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を取得して自分のリポジトリにインストールすることができます。

112
Pascal Thivent

これは最近追加されたようです。

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>
455
Sa'ad

あるいは、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/

36
cuh

残念ながら、依存関係として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>
24
ifischer

これが私が使っているものです。これらはすべて中央にあり、情報源があります。

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

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

初心者向けです。

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

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サーブレットのものがすべてそこに入っているように見えます。楽しい!

4
brabster

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