へっぽこITエンジニア@名古屋のブログ

Follow me on GitHub

mavenのdeployで422

今回は、Githubのmavenリポジトリーにmvn deployを使ってアップしました。

しかし、あるリポジトリはできるのにあるリポジトリは 422 Unprocessable Entityといったエラーができました。

422 Unprocessable Entityの原因

今回の原因は簡単で、pom.xmlの最初に以下のようなのを記載しますが、 artifactIdに大文字を使ってはいけないようです。

  <groupId>xxxx</groupId>
  <artifactId>yyyyy</artifactId>

mvn installなどはうまくいくのですが、deployはなぜかうまくいかないよう・・・ 知らなかった。

今回の話はここで終わってしまうので、 GithubのPackageを利用する方法を追記します。

~/.m2/settings.xmlにGithubの情報を追加

設定の方法は以下にまとまっています。 Github Package

簡単に書くと以下のような感じです。

.m2/settings.xmlの repositoriesの中に以下を記載します

OWNERのところがリポジトリの所有者、REPOSITORYのところを対象としたいリポジトリ とする必要があります。

リポジトリが複数あって定義がめんどくさい場合は「OWNER/*」で全部とすることもできるようです。

<repository>
  <id>github</id>
  <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
  <snapshots>
  <enabled>true</enabled>
  </snapshots>
</repository>

Settingsタグに以下を追加します。

USERNAMEは追加したリポジトリに権限があるGithubのアカウント TOKENにはGitHubのパスワードによるアクセス拒否で紹介したPersonal access tokensで作成した値を登録します。

<servers>
  <server>
    <id>github</id>
    <username>USERNAME</username>
    <password>TOKEN</password>
  </server>
</servers>

pom.xmlにデプロイ情報を追加

pom.xmlをOWNERとREPOSITORYにはそれぞれリポジトリの所有者とリポジトリ名を追記します。

<distributionManagement>
   <repository>
     <id>github</id>
     <name>GitHub OWNER Apache Maven Packages</name>
     <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
   </repository>
</distributionManagement>

あとはmvn deployとすればPackagesにデプロイされて、 他リポジトリからdependenceに記載すれば利用できるようになります。

なんか便利

まとめ

mvn deployで422 Unprocessable Entityが発生する原因の1つはartifactIdに大文字を使っているからのようです。mvn installとかは使えるのに、若干はめですよねw小文字に変えて対応しましょう。

githugのPackageを使うことでmavenのリポジトリとして使えます。 便利なので利用してみてはどうでしょうか。

作成日:2022-02-27  更新日:2022-02-27