MavenCentralRepository への登録でエラーが直った件 (2024年版)

# 前提

前はMavenCentralRepositoryにライブラリを公開できていた人向けの説明です

# エラー内容

久しぶりに Maven Central Repository にビルドをアップロードしようとしたところ、以下のようになりました。

```shell
>mvn -DperformRelease=true clean deploy

...

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:24 min
[INFO] Finished at: 2024-08-08T21:12:03+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.7.0:deploy (injected-nexus-deploy) on project nlp4j-core: Remote staging failed: Failed to deploy artifacts: Could not transfer artifact org.nlp4j:nlp4j-core:jar:javadoc:1.3.7.13 from/to ossrh (https://oss.sonatype.org:443/service/local/staging/deployByRepositoryId/orgnlp4j-1074): status code: 401, reason phrase: Content access is protected by token (401) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
```

原因がなかなかわからなかったのですが、公式ドキュメントにはちゃんと書かれておりました。（そもそも一度設定すると滅多に公式ドキュメントを見に行かないので、公式ドキュメントがどれなのかもわからない）

https://central.sonatype.org/publish/generate-token/

```
1. Go to the Nexus Repository Manager web interface where your project is hosted
- This is likely oss.sonatype.org or s01.oss.sonatype.org
2. Select the Profile option in the yellow top right dropdown menu
- This should open the Profile tab in the main window
3. In the Profile tab, select the User Token option in the select input field
- This should navigate to the User Token view in the tab
4. Click the Access User Token button (you will need to reenter your credentials)
5. You can now use that generated token in your publishing setup
```
```xml
<server>
  <id>${server}</id>
  <username>tokenuser</username>
  <password>tokenkey-dlghnfgh8+4LfXmg5Hsd8jd</password>
</server>
```

https://central.sonatype.org/faq/401-error/


> 401 Content access is protected by token
> 
> This error message indicates that you are likely publishing to OSSRH via your username and password. While this was a previously allowed way of interacting with OSSRH, changes to the authentication process have resulted in publishing requiring the use of a user token. We have documentation on setting up a user token that will help.

> 401 コンテンツへのアクセスはトークンによって保護されています
> 
> このエラー メッセージは、ユーザー名とパスワードを使用して OSSRH に公開しようとしていることを示しています。これは以前は OSSRH とやり取りする方法として許可されていましたが、認証プロセスの変更により、公開にはユーザー トークンの使用が必要になりました。ユーザー トークンの設定に関するドキュメントがありますので、参考にしてください。

要するに、ユーザーIDとパスワードであったものを、トークンユーザーとトークンキーにせよということらしいです。

（401なのは理解できていたのですが、もう少し丁寧なエラーメッセージだとありがたかった。）

# settings.xml で修正した箇所

修正前は以下のような箇所がありました。

```xml
    <server>
      <id>ossrh</id>
      <username>ユーザー名</username>
      <password>https://oss.sonatype.org/ 暗号化されたパスワード</password>
    </server>
```

修正前に、コンソールでトークンを確認します。

[https://oss.sonatype.org/](https://oss.sonatype.org/)

コンソールで取得したトークンユーザーとトークンキーを以下のように設定します。
（取得したタイミングでサンプルが出力される）

## 修正前

```xml
	<server>
		<id>ossrh</id>
		<username>トークンユーザー</username>
		<password>トークンキー</password>
	</server>
```

## 修正後

```
>mvn -DperformRelease=true clean deploy

(略)

[INFO]  * Upload of locally staged artifacts finished.
[INFO]  * Closing staging repository with ID "orgnlp4j-1075".

Waiting for operation to complete...
............

[INFO] Remote staged 1 repositories, finished with success.
[INFO] Remote staging repositories are being released...

Waiting for operation to complete...
.......

[INFO] Remote staging repositories released.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:14 min
[INFO] Finished at: 2024-08-08T23:09:28+09:00
[INFO] ------------------------------------------------------------------------
```

# 参考

https://qiita.com/tamurashingo@github/items/73262e5b3acd90308b85


[https://central.sonatype.org/publish/generate-token/](https://central.sonatype.org/publish/generate-token/)


---

以上.