6.

Java 外部ライブラリ導入完全ガイド — Maven/Gradle/jar/Eclipse/IntelliJ

編集
この記事の要点
  • Java の外部ライブラリ導入はビルドツール経由が標準。Maven (pom.xml) または Gradle (build.gradle) に依存を 1 行書くだけ
  • 主要リポジトリ: Maven Central (repo.maven.apache.org)、Sonatype OSS、Spring、JCenter (廃止)、社内 Nexus / Artifactory
  • 依存スコープ: compile (実行時必須) / provided (Tomcat 等が提供) / runtime (実行時のみ) / test (テスト時のみ)
  • IDE のレガシー方式: Eclipse は「Java Build Path → Libraries → Add External JARs」、IntelliJ は「Project Structure → Libraries」で jar を直接追加
  • 有名 OSS: Apache Commons (文字列/数値補助)、Guava (Google), Jackson (JSON), Log4j 2 / SLF4J (ログ), JUnit (テスト)

外部ライブラリとは

Java の外部ライブラリは、JDK 標準には含まれない機能を提供する .jar ファイルの集合です。プロジェクトに追加することで、JSON パース・HTTP クライアント・ロギング・テストなどの定型処理を再発明せずに済みます。

導入方法は大きく 3 通り:

  1. Maven: pom.xml<dependency> を書く (最普及)
  2. Gradle: build.gradleimplementation 行を書く
  3. 手動配置: lib/ ディレクトリに jar を置き、IDE の Build Path に追加 (レガシー)

Maven での導入

最も普及した Java 用ビルドツール。pom.xml を編集して保存するだけで、Maven Central から自動ダウンロードされます。

<!-- pom.xml -->
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>

  <dependencies>
    <!-- Jackson (JSON 処理) -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.17.0</version>
    </dependency>

    <!-- Apache Commons Lang -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.14.0</version>
    </dependency>

    <!-- JUnit 5 (テスト時のみ) -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.10.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
# 依存解決とビルド
mvn clean install

# 依存関係ツリー表示
mvn dependency:tree

# ローカルに jar を出力
mvn package

Gradle での導入

Maven より柔軟・高速。Kotlin DSL (build.gradle.kts) と Groovy DSL (build.gradle) の 2 種類。

// build.gradle
plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.0'
    implementation 'org.apache.commons:commons-lang3:3.14.0'
    implementation 'com.google.guava:guava:33.0.0-jre'

    // ログ
    implementation 'org.slf4j:slf4j-api:2.0.9'
    runtimeOnly   'ch.qos.logback:logback-classic:1.4.14'

    // テスト
    testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'

    // コンパイル時のみ (例: Lombok)
    compileOnly      'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
}
# Wrapper 経由でビルド (推奨)
./gradlew build

# 依存関係ツリー
./gradlew dependencies

# 特定タスク
./gradlew test
./gradlew bootRun       # Spring Boot

依存スコープ

Maven scopeGradle configuration使う場面
compile (旧) / 既定implementation常に必要 (アプリ本体で利用)
providedcompileOnlyTomcat / Servlet API のように実行環境が提供
runtimeruntimeOnlyJDBC ドライバなどコンパイル不要・実行時必要
testtestImplementationJUnit / Mockito 等テスト時のみ
system (非推奨)ローカル jar を強制参照 (避ける)

主要リポジトリ

名前URL説明
Maven Centralrepo.maven.apache.org事実上の標準。OSS の 9 割超
Sonatype OSS Snapshotss01.oss.sonatype.orgリリース前のスナップショット
Spring Releasesrepo.spring.ioSpring 系 (Spring 5 以降は Central と並行)
JCenter2022 年廃止。Maven Central へ移行
社内 Nexus / Artifactory社内 URL企業内プロキシ。社内ライブラリ配布

jar を直接配置 (レガシー方式)

ビルドツールが使えない学習プロジェクトや、Maven Central に無いライブラリでは、jar を lib/ に置いて IDE の Build Path から追加します。

Eclipse での追加

  1. プロジェクト直下に lib/ フォルダ作成、jar をコピー
  2. プロジェクト右クリック → PropertiesJava Build Path
  3. Libraries タブ → Classpath 選択 → Add JARs... (プロジェクト内) または Add External JARs... (外部)
  4. OK で適用 → .classpath ファイルに記録される

IntelliJ IDEA での追加

  1. File → Project Structure (Ctrl+Alt+Shift+S)
  2. 左メニュー Libraries+Java
  3. jar ファイルを選択 → どのモジュールに追加するか選ぶ
  4. 適用 → .idea/libraries/ に XML が生成

注意: 手動配置はチーム開発で再現性が悪いため、可能なら Maven / Gradle 化するのが現代的です。

有名 OSS ライブラリカタログ

分野ライブラリ用途
汎用ユーティリティApache Commons Lang / IO / Collections文字列/IO/コレクションのヘルパ
汎用ユーティリティGoogle Guava不変コレクション、キャッシュ、関数型
JSONJackson, Gsonシリアライズ/デシリアライズ
HTTP クライアントOkHttp, Apache HttpClient, RetrofitHTTP API 呼び出し
ログLog4j 2, Logback, SLF4Jロギング (SLF4J は facade)
テストJUnit 5, TestNG, Mockito, AssertJユニットテスト/モック
ORMHibernate, MyBatis, jOOQDB アクセス
Web フレームワークSpring Boot, Quarkus, Micronautサーバアプリケーション
DISpring, Guice, Dagger依存性注入
非同期/並行Project Reactor, RxJavaリアクティブストリーム

FAQ

Q: pom.xml に書いたのに NoClassDefFoundError が出る
A: mvn clean install を実行していない、または scope=provided なのに実行時クラスパスにライブラリが居ない可能性。mvn dependency:tree で実際の解決状態を確認しましょう。

Q: 同じライブラリの違うバージョンが混ざる (Diamond Dependency)
A: Maven は最も近い宣言を優先します。<dependencyManagement> や Gradle の resolutionStrategy で版数を固定しましょう。

Q: 社内プロキシで Maven Central に繋がらない
A: ~/.m2/settings.xml<proxies> 設定を追加、または社内 Nexus を <mirrors> に登録して経由させます。

編集
Post Share
子ページ
  1. NumPy
  2. Matplotlib
同階層のページ
  1. 基本的なルール
  2. 変数
  3. 演算子
  4. 標準ライブラリ
  5. 外部ライブラリ
  6. 制御構文
  7. リスト(配列)
  8. タプル
  9. セット
  10. 辞書(dict)
  11. クラスとメソッド
  12. 継承の概念と必要性
  13. 継承の構文
  14. コンストラクタ
  15. cookieの値の設定と取得
  16. 例外処理
  17. 例外を文字列で出力する方法
  18. httpリクエスト(curl)をする方法
  19. Responseオブジェクトの中身の確認
  20. 変数が空かどうか判定する方法
  21. タイムゾーンの設定と現在日時の取得と文字列化
  22. シングルクォーテーションとダブルクォーテーションの違い

最近更新/作成されたページ