Mavenに依存関係を追加する


134

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

回答:


139

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

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

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

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>

3
デプロイに関する詳細を追加できますか?内部リポジトリがあり、ローカルjarでインストールされたファイルをそのリポジトリにデプロイして、他の開発者やビルドサーバーがjarも取得できるようにしたいと考えています。
キエーヴェリ2009年

この答えはすべての同類を取得する必要があります!これを使用して、Google App EngineとHerokuの両方で私のmavenプロジェクトの依存関係を正常に追加しました。
Leo C Han

93

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>

4
jarの代わりに別のpomファイルに依存できますか?
Jayen 2013

45

実際、これを調査すると、これらの答えはすべて正しくないと思います。に対する私たちの理解のレベルのため、あなたの質問は誤解を招くものですmaven。そして、私は単に紹介されたばかりなので、私たちのことを言いますmaven

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

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

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


5
私は(Eclipse上に構築された)Spring Tool Suiteを使用しています。上記のソリューションのステップ1と2の後:1. STSエディターでpom.xmlを開き、下部の[依存関係]タブをクリックします2.依存関係グループの[追加]をクリックします3.ブラウザーウィンドウから[Maven]タブの依存関係情報をコピーして貼り付けます( groupId、artifactId、version)をSTSの[Select Dependency]ポップアップの対応するフィールドに入力します。4。[OK]をクリックします。5. pom.xmlを保存します。.xmlを直接編集できますが、ツールを使用すると、xml形式の問題を回避するのに役立つ場合があります。
クリスR

2
これは確かに望ましい方法ですが、それができない状況もあります(mvnrepositoryにない独自のjarなど)。その場合、「手動」で追加する方法が必要になります。その場合、別の答えが解決策になります。
Thunderforge

また、尋ねられた質問が初心者の質問ではなかった可能性もあります。私はこれを、Mavenでの作業に費やされた時間から生じる適切なフレージングなしで何かをしたい人のために入れました。(当時の私と同じです)
キエーヴェリ2014

KISSありがとう、これはJavaでのC#Nugetの同等物であると読みましたが、実行するためにクリックまたはcmdするボタンを見つけようとしていました。正確に1:1ではありませんが、仕事をします。
テランス

intelleJのmavenでプロジェクトを再構築する方法?
Irfan Nasim、2015年

14

私はこれを行います:

  1. pomに好きなように依存関係を追加します。

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>

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


3

依存関係を「既知のリポジトリ」にプッシュする方法を尋ねていると仮定します。単にPOMを更新する方法を尋ねるだけではありません。

はいの場合、これはあなたが読みたいものです。

そして、内部リポジトリー・サーバーのセットアップを検討している人は、ここを見てください(Maven 2の使用に関する問題の半分はドキュメントを見つけることです)


自分で依存関係を維持したいです。これは社内のライブラリです。
Milhous
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.