Java パッケージを管理する

Artifact Registry は、Maven と Gradle でビルドした Java パッケージをサポートしています。

概要

Artifact Registry の Java パッケージに慣れるには、クイックスタートをお試しください。

詳細をご確認いただく準備が整ったら、以下の情報をご覧ください。

  1. パッケージ用に Java パッケージ リポジトリを作成する
  2. リモート リポジトリと仮想リポジトリを作成する方法を学習する。
  3. リモート リポジトリと仮想リポジトリの使用方法については、リポジトリの使用例をご覧ください。
  4. リポジトリに接続するアカウントに権限を付与します。Artifact Registry との一般的な統合に使用されるサービス アカウントには、同一のプロジェクト内のリポジトリに対するデフォルトの権限が割り当てられています。
  5. ツールを構成します。
    • Maven または Gradle の認証を構成します。
    • Maven や Gradle を使用するのではなく、sbt を Scala と Java 用のビルドツールとして使用する場合、コミュニティで作成された sbt プラグインをご利用いただけます。このドキュメントでは、Scala クライアントの構成や使用法は説明しません。
    • パッケージのアップロードとダウンロードを行うように Cloud Build を構成する。
    • Google Cloud ランタイム環境へのデプロイについて学習します。
  6. パッケージの管理について学習する。

Maven のスナップショットとリリース バージョン

Maven は、Maven プロジェクトのスナップショット バージョンとリリース バージョンを区別します。

スナップショット

スナップショットは、Java プロジェクトのプレリリース版です。スナップショットのバージョン番号には、プロジェクト オブジェクト モデル(POM)の接尾辞 -SNAPSHOT が含まれています。たとえば、pom.xml ファイルのこの設定は、開発中のプロジェクトの 1.0 バージョン用です。

<version>1.0-SNAPSHOT</version>

このプロジェクトからパッケージを公開すると、Maven 3 はスナップショットのバージョン番号にタイムスタンプを自動的に追加し、各スナップショット バージョンを一意にします。Maven 2 は、リポジトリ内の既存のスナップショットを上書きする手段として、一意でないスナップショット バージョンをサポートしています。このアプローチはビルドの再現性に問題があるため、Maven 3 では一意でないスナップショットがサポートされなくなりました。

スナップショットを使用すると、リポジトリに公開するたびに Maven プロジェクトのバージョン番号を増分せずに、プレリリース版パッケージの更新バージョンを繰り返し公開できます。開発中、このパッケージに依存する他のプロジェクトは、リポジトリからバージョン 1.0 の最新のスナップショットを取得できます。

Maven のバージョン番号の構文と並べ替え順の詳細については、バージョン順序の仕様をご覧ください。

リリース

パッケージをリリースする準備ができたら、POM ファイルのバージョン番号から -SNAPSHOT 接尾辞を削除し、パッケージに依存するすべてのプロジェクトを更新して、スナップショットのバージョンではなくリリース バージョンを使用できるようにします。

すべてのスナップショット依存関係を一覧表示するには、次のコマンドを使用して、依存関係ツリーをフィルタします。

mvn dependency:tree -Dincludes=:::*-SNAPSHOT

Artifact Registry バージョン ポリシー

Artifact Registry で Maven リポジトリを作成するときに、Maven バージョン ポリシーを指定できます。

  • なし - スナップショット パッケージとリリース パッケージの両方を保存します。これはデフォルトの設定です。
  • スナップショット - スナップショット パッケージのみを保存します。
  • リリース - リリース パッケージのみを保存します。

スナップショットのバージョン ポリシーを選択する場合は、リポジトリ内の一致するバージョンを上書きする一意でないスナップショット バージョンをリポジトリで許可するかどうかも指定できます。Maven 3 は一意でないバージョン モデルをサポートしていないため、一意のバージョンを使用することをおすすめします。