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.1</version>
  </extension>
</extensions>

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

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

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

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

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

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

Where

  • 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