3

私はmavenを初めて使用し、Java Webアプリを(IDEで管理するのではなく)mavenに変換しています。依存関係をローカルにインストールする (最初の選択肢) か、提供された依存関係として宣言する (2 番目の選択肢) ことができることを理解しています。、、および の意味について読みました。ただし、jar の正確な座標を決定する方法については説明していません。groupIdartifactIdversion

たとえば、問題の jar (apache-tomcat 7.0.34 の servlet-api.jar)には、jar に pom.xml ファイルがありません。

4

3 に答える 3

2

私が通常行うことは、http ://search.maven.org にアクセスして jar を探すことです。たとえば、servlet-api.jar です。完全修飾クラス名の検索も実行できます。たとえば、jar 内にクラス javax.servlet.http.HttpServletRequest があることがわかっている場合、fc:javax.servlet.http.HttpServletRequestを検索すると、これを含むすべての jar が一覧表示されます。クラス

ただし、servlet-api.jar の場合は、コンテナー (この場合は tomcat) によって提供される必要があるため、war/ears にバンドルしないでください。通常、Java EE プロジェクトを作成する際のベスト プラクティスは、指定されたスコープに javax.servlet:servlet-api:2.5 (またはコンテナーでサポートされている他のバージョン) への依存関係を含めることです。したがって、jar はコンパイル時にのみクラスパスに存在しますが、実行時にはコンテナーによって提供されます。

于 2013-01-30T21:50:40.293 に答える
2

任意の jar ファイル (この場合は servlet-api.jar) がいくつかのフォルダーに存在する場合、それがいくつかのバージョンと同じであるかどうかを確認するために探し回る必要があります。

1 : jar の中を見て、その中のファイルの日付 (または日付範囲) に注意してください。そこにあるファイルに気付くかもしれません。その詳細が必要になる場合があります。

2 : 瓶を探すことができる場所に行きます。jar の名前を入力できるhttp://mvnrepository.com/が気に入っています。「サーブレット-api」。私は約10秒でこれを見つけました:

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifact>servlet-api</artifactId>
    <version>6.0.36</version>
</dependency>
        

しかし、それはあなたのものではありません。(さらに 30 秒後、これを見つけました: mvnrepository servlet-api for tomcat 7.0.34 )

  • 次に、一致すると思われるものをダウンロードし、その中を調べて、日付が一致するかどうかを確認できます。
  • ここからは基本的に探偵業。Maven の「座標」で正確な jar が見つかる場合と、そうでない場合があります。

他の回答を読んで、Java EE jar では、アプリケーションの構築に汎用バージョンを使用するのが最善であることを思い出しました。Maven スコープには「provided」を使用します。コンテナーは実際の jar を提供します。それが完全に標準でない場合は、ビルドで汎用バージョンを使用しているため、非標準の部分を使用することはありません。

したがって、たとえば、次のようにビルドできます。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.4</version>
    <scope>provided</scope>
</dependency>
于 2013-01-30T20:48:10.357 に答える
0

Maven アーティファクト (JAR ファイル) は、たとえば次の場所にあります。

~/.m2/repository/org/apache/tomcat/artifact/version/

私の記憶が正しければ、servlet-api.jar ファイルは ~/.m2/repository/javax/servlet/servlet-api/2.5/ にあります - サーブレット仕様のバージョン 2.5 を使用している場合。

ただし、servlet-api は常にアプリケーション コンテナーによって提供されるため、Maven POM の依存関係の「提供」タイプです。

于 2013-01-30T20:58:48.540 に答える