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