Java パッケージに関する問題のトラブルシューティング

Artifact Registry で java パッケージを管理する際に問題が発生した場合に役立つトラブルシューティング手順について説明します。

Artifact Registry に保存されている依存関係を解決できない

Maven は、pom.xml で定義されたワゴンを適用する前に、次のような依存関係を解決します。

  • <parent> 要素を使用した、子 Maven プロジェクト内の親プロジェクトへの参照。
  • Artifact Registry に保存されているプラグインの依存関係。

プロジェクトでこれらの依存関係を解決する必要がある場合は、コア拡張機能メカニズムを使用して、Maven が親 POM ファイルとプラグインを見つけることができるようにする必要があります。

プロジェクトで、次の内容を含むファイル ${maven.projectBasedir}/.mvn/extensions.xml を作成します。<extension> エレメントはワゴンを定義します。

<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
  <extension>
    <groupId>com.google.cloud.artifactregistry</groupId>
    <artifactId>artifactregistry-maven-wagon</artifactId>
    <version>2.2.3</version>
  </extension>
</extensions>

一意でないスナップショットをスナップショット リポジトリにアップロードできません

Artifact Registry スナップショット リポジトリに存在しないスナップショット バージョンをアップロードできますが、リポジトリにすでに存在するバージョンを上書きすることはできません。

一意でないスナップショットは Maven 2 の機能です。Maven 3 では、すべてのスナップショットのバージョンが一意になるように、スナップショットのバージョン番号に常にタイムスタンプが追加されます。

Artifact Registry は、スナップショット バージョン ポリシーを持つリポジトリの一意でないスナップショット バージョンのみをサポートします。デフォルトでは、スナップショット リポジトリは一意のスナップショット バージョンのみを受け入れます。バージョン ポリシーはリポジトリの作成時にのみ設定できます。

リポジトリのバージョン ポリシー設定を確認するには、次のコマンドを実行します。

gcloud artifacts repositories describe REPOSITORY \
    [--project=PROJECT] \
    [--location=LOCATION]

ここで

  • REPOSITORY はリポジトリの ID です。デフォルトの Artifact Registry リポジトリを構成した場合、このフラグがコマンドから省略されると使用されます。
  • PROJECT は、プロジェクト ID です。このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。

コマンドの出力では、バージョン ポリシーに関する情報が mavenConfig の下に含まれています。次の例では、リポジトリにスナップショットのバージョン ポリシーがあり、スナップショットはリポジトリ内の同じバージョンを上書きできません。

Encryption: Google-managed key
createTime: '2021-09-23T19:39:10.897404Z'
format: MAVEN
mavenConfig:
 allowSnapshotOverwrites: false
 versionPolicy: SNAPSHOT