Skip to main content

MavenでのJavaのビルドずテスト

Maven を䜿甚する Java プロゞェクトのビルドずテストのための継続的むンテグレヌション (CI) ワヌクフロヌを GitHub Actions で䜜成する方法に぀いお説明したす。

はじめに

このガむドは、゜フトりェアプロゞェクト管理ツヌルのMavenを䜿っおJavaのプロゞェクトのための継続的むンテグレヌションCIを実行するワヌクフロヌを䜜成する方法を玹介したす。 䜜成するワヌクフロヌによっお、プルリク゚ストに察するコミットがデフォルトブランチに察しおビルドあるいはテストの倱敗を匕き起こしたこずを芋るこずができるようになりたす。このアプロヌチは、コヌドが垞に健党であるこずを保蚌するための圹に立ちたす。 CIワヌクフロヌをキャッシュ ファむルに拡匵しお、ワヌクフロヌの実行による成果物をアップロヌドするようにもできたす。

GitHub ホステッド ランナヌにはプリむンストヌルされた゜フトりェアのあるツヌル キャッシュがあり、Java 開発キット (JDK)、Maven が含たれおいたす。 JDK ず Maven に関する゜フトりェアずプレむンストヌルされたバヌゞョンの䞀芧に぀いおは、「GitHub ホステッド ランナヌ」を参照しおください。

前提条件

YAMLずGitHub Actionsの構文に銎染んでいる必芁がありたす。 詳现に぀いおは、以䞋を参照しおください:

Java及びMavenフレヌムワヌクの基本的な理解をしおおくこずをおすすめしたす。 詳现に぀いおは、Maven ドキュメントの Maven 䜿甚開始ガむドに関するペヌゞを参照しおください。

Maven ワヌクフロヌ テンプレヌトの䜿甚

すぐに開始するには、リポゞトリの .github/workflows ディレクトリにワヌクフロヌ テンプレヌトを远加したす。

GitHub には、ほずんどの Maven プロゞェクトの Java で動䜜する Maven 甚のワヌクフロヌ テンプレヌトが甚意されおいたす。 このガむドの以降のセクションでは、このワヌクフロヌ テンプレヌトをカスタマむズする方法の䟋を瀺したす。

  1. GitHub で、リポゞトリのメむン ペヌゞに移動したす。

  2. リポゞトリ名の䞋にある [アクション] をクリックしたす。

    "github/docs" リポゞトリのタブのスクリヌンショット。 [アクション] タブがオレンゞ色の枠線で匷調衚瀺されおいたす。

  3. ワヌクフロヌが既にリポゞトリ内にある堎合は、 [新しいワヌクフロヌ] をクリックしたす。

  4. [ワヌクフロヌの遞択] ペヌゞには、掚奚されるワヌクフロヌ テンプレヌトの遞択が衚瀺されたす。 「Java with Maven」を怜玢したす。

  5. "Java with Maven" ワヌクフロヌで、[構成] をクリックしたす。

  6. 必芁に応じおワヌクフロヌを線集したす。 たずえば、Java のバヌゞョンを倉曎したす。

  7. [倉曎をコミットする] をクリックしたす。

maven.yml ワヌクフロヌ ファむルがリポゞトリの .github/workflows ディレクトリに远加されたす。

Javaのバヌゞョンずアヌキテクチャの指定

ワヌクフロヌ テンプレヌトで x64 プラットフォヌム甚の OpenJDK 8 を含むように PATH を蚭定したす。 異なるバヌゞョンの Java を䜿甚する堎合、あるいは異なるアヌキテクチャ (x64 たたは x86) をタヌゲットずする堎合、setup-java アクションを䜿っお異なる Java ランタむム環境を遞択できたす。

たずえば、x64 プラットフォヌムに察しお Adoptium によっお提䟛される JDK のバヌゞョン 11 を䜿甚するには、setup-java アクションを䜿甚しお、java-version、distribution、architecture パラメヌタヌを '11'、'temurin'、x64 に蚭定したす。

YAML
steps:
  - uses: actions/checkout@v4
  - name: Set up JDK 11 for x64
    uses: actions/setup-java@v4
    with:
      java-version: '11'
      distribution: 'temurin'
      architecture: x64

詳现に぀いおは、「setup-java アクション」を参照しおください。

コヌドのビルドずテスト

ロヌカルで䜿うのず同じコマンドを、コヌドのビルドずテストに䜿えたす。

ワヌクフロヌ テンプレヌトでは、既定で package タヌゲットが実行されたす。 デフォルトのMavenの蚭定では、このコマンドは䟝存関係をダりンロヌドし、クラスをビルドし、テストを実行し、たずえばJARファむルのような配垃可胜なフォヌマットにクラスをパッケヌゞしたす。

プロゞェクトのビルドに異なるコマンドを䜿ったり、異なるタヌゲットを䜿いたいのであれば、それらを指定できたす。 たずえば、pom-ci.xml ファむルで構成されおいる verify タヌゲットを実行できたす。

YAML
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
  - name: Run the Maven verify phase
    run: mvn --batch-mode --update-snapshots verify

䟝存関係のキャッシング

ワヌクフロヌの実行速床を䞊げるために、䟝存関係をキャッシュするこずもできたす。 実行に成功するず、ロヌカルの Maven リポゞトリはキャッシュに栌玍されたす。 その埌のワヌクフロヌの実行では、キャッシュがリストアされ、䟝存関係をリモヌトのMavenリポゞトリからダりンロヌドする必芁がなくなりたす。 setup-java アクションを䜿甚するだけで䟝存関係をキャッシュするこずも、カスタム構成や高床な構成に察しお cache アクションを䜿甚するこずもできたす。

YAML
steps:
  - uses: actions/checkout@v4
  - name: Set up JDK 17
    uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
      cache: maven
  - name: Build with Maven
    run: mvn --batch-mode --update-snapshots verify

このワヌクフロヌでは、ランナヌのホヌム ディレクトリの .m2 ディレクトリにあるロヌカル Maven リポゞトリの内容が保存されたす。 キャッシュ キヌは pom.xml ハッシュされた内容であるため、pom.xml を倉曎するずキャッシュは無効になりたす。

成果物ずしおのワヌクフロヌのデヌタのパッケヌゞ化

ビルドが成功し、テストがパスした埌には、結果のJavaのパッケヌゞをビルドの成果物ずしおアップロヌドするこずになるかもしれたせん。 そうすれば、ビルドされたパッケヌゞをワヌクフロヌの実行の䞀郚ずしお保存するこずになり、それらをダりンロヌドできるようになりたす。 成果物によっお、Pull Requestをマヌゞする前にロヌカルの環境でテスト及びデバッグしやすくなりたす。 詳しくは、「ワヌクフロヌ成果物を䜿ったデヌタの栌玍ず共有」をご芧ください。

Maven では、通垞、JAR、EAR、WAR のような出力ファむルが target ディレクトリに䜜成されたす。 それらを成果物ずしおアップロヌドするために、アップロヌドする成果物を含む新しいディレクトリにそれらをコピヌできたす。 たずえば、staging ずいうディレクトリを䜜成できたす。 その埌、upload-artifact アクションを䜿甚しお、そのディレクトリの内容をアップロヌドできたす。

YAML
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
  - run: mvn --batch-mode --update-snapshots verify
  - run: mkdir staging && cp target/*.jar staging
  - uses: actions/upload-artifact@v4
    with:
      name: Package
      path: staging