web-dev-qa-db-ja.com

Mavenに依存関係を追加する

持っているjarファイルを取得して、それをMaven 2の依存関係システムに追加するにはどうすればよいですか?私はこの依存関係のメンテナーになり、コードをコンパイルするにはクラスパスにこのjarが必要です。

132
Milhous

次の2つの手順でこれを行う必要があります。

1. JARにgroupId、artifactId、およびバージョンを指定し、リポジトリに追加します。

内部リポジトリがなく、JARをローカルリポジトリに追加しようとしている場合、任意のgroupId/artifactIdを使用して、次のようにインストールできます。

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

内部リポジトリがある場合はそれを内部リポジトリに展開し、組織内の他の開発者が利用できるようにすることもできます。リポジトリのWebベースのインターフェイスを使用してアーティファクトを追加するだけですが、mvn deploy:deploy-file ...を使用して同じことを達成できるはずです。

2.このJARを参照するように依存プロジェクトを更新します。

次に、以下を要素に追加して、JARを使用するプロジェクトのpom.xmlの依存関係を更新します。

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>
139
Jack Leow

Mavenリポジトリにない依存関係を指定することもできます。チームの中央Mavenリポジトリが存在しない場合、または CI サーバーがある場合に役立ちます

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>
93
Frederic Morin

実際、これを調査すると、これらの答えはすべて間違っていると思います。 mavenを理解しているため、あなたの質問は誤解を招きます。 mavenを紹介したばかりだからです。

Eclipseで、プロジェクトにjarファイルを追加する場合、通常、jarを手動でダウンロードしてから、libにドロップします。ディレクトリ。 Mavenを使用すると、この方法でそれを行うことはありません。あなたがすることは次のとおりです。

  • mvnrespoitory に移動します
  • 追加するライブラリを検索します
  • dependencyステートメントをpom.xmlにコピーします
  • mvn経由で再構築

これで、mavenは、依存関係のリストとともにjarを接続してダウンロードし、jarにあった可能性のある追加の依存関係を自動的に解決します。したがって、jarにもcommons-loggingが必要な場合は、それもダウンロードされます。

45
Kieveli

私はこれをします:

  1. 必要に応じて依存関係をpomに追加します。

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>
    
  2. mvn installを実行すると、jarをダウンロードしようとして失敗します。プロセスでは、jarをインストールする完全なコマンドとエラーメッセージが表示されます。そのコマンドをコピーして実行してください!簡単ですね?!

14
user40032

単にPOMを更新する方法を尋ねるのではなく、「よく知られているリポジトリ」に依存関係をプッシュする方法を尋ねていると仮定します。

はいの場合、 this が読みたいものです。

内部リポジトリサーバーのセットアップをお探しの方は、 here (Maven 2の使用に関する問題の半分はドキュメントを見つけることです)をご覧ください。

3
kdgregory