Maven-external-dependencies

提供:Dev Guides
移動先:案内検索

Maven-外部依存関係

ご存じのとおり、Mavenはリポジトリーの概念を使用して依存関係管理を行います。 しかし、リモートリポジトリと中央リポジトリのいずれでも依存関係が利用できない場合はどうなりますか? Mavenは、 External Dependency の概念を使用して、このようなシナリオに対する答えを提供します。

たとえば、「Javaプロジェクトの作成」の章で作成したプロジェクトに次の変更を加えてみましょう。

  • lib フォルダーをsrcフォルダーに追加します。
  • jarをlibフォルダーにコピーします。 LDAP操作のヘルパーライブラリーである ldapjdk.jar を使用しました。

これで、プロジェクト構造は次のようになります-

外部リポジトリプロジェクト構造

ここには、プロジェクト固有の独自のライブラリがありますが、これは通常のケースであり、jarが含まれています。 コードがこのライブラリをMavenで使用している場合、コンパイル段階でこのライブラリをダウンロードまたは参照できないため、Mavenビルドは失敗します。

この状況を処理するために、次の方法を使用してこの外部依存関係をmaven pom.xml に追加しましょう。

<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.bank</groupId>
   <artifactId>consumerBanking</artifactId>
   <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>consumerBanking</name>
   <url>http://maven.apache.org</url>

   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>ldapjdk</groupId>
         <artifactId>ldapjdk</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
      </dependency>
   </dependencies>

</project>

上記の例の依存関係の下にある2番目の依存関係要素を見てください。これにより、 External Dependency に関する以下の重要な概念がクリアされます。

  • 外部依存関係(ライブラリjarの場所)は、他の依存関係と同じ方法でpom.xmlで構成できます。
  • ライブラリの名前と同じgroupIdを指定します。
  • ライブラリの名前と同じartifactIdを指定します。
  • スコープをシステムとして指定します。
  • プロジェクトの場所に相対的なシステムパスを指定します。

これで、外部依存関係について明確になり、Mavenプロジェクトで外部依存関係を指定できるようになります。