mvn deployで認証エラー(Unauthorized)を解消する ~ デプロイ例と共に
はじめに
ローカルのサードパーティライブラリーを、自分で構築したNexusにdeployしたときに認証エラーにひっかかったので、参考になればとデプロイの過程を説明しながら記載しておきます。
SpringFrameworkのライブラリをデプロイする例
例えば、SpringFrameworkを利用していて、以下のSpringFrameworkのjarを自分のNexusにDeployしたいケースです。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
アップロード先のnexusリポジトリを確認
今回、例示用のNexusはdockerを利用してローカルに構築しました(使い捨てって便利)。
https://hub.docker.com/r/sonatype/nexus/
サードパーティーのライブラリなので、thirdpartyのリポジトリに上げることにします。
ローカルにjarを用意
spring-web-5.1.9.RELEASE.jarをローカルに用意します。
好きな場所からダウンロードしてきましょう。
今回はこちらからダウンロードしました。
https://search.maven.org/artifact/org.springframework/spring-web/5.1.9.RELEASE/jar
settings.xmlを用意
Nexusをmvnコマンドで操作するためには認証が必要です。でないと誰でもアップロードしたり、削除したりできてしまいすから。
そのために以下のようなsettings.xmlファイルを用意します。場所はホームディレクトリ配下にある.m2ディレクトリ以下です(任意の場所に置いたとしてもmvn実行時に指定できます)。
このserversのところで認証情報を指定します。idはNexusのリポジトリIDです。今回はthirdpartyというIDのリポジトリにアップロードするので、idを合わせてあります(ここが一番ひっかかりました)。
usernameとpasswordですが、deployment/deployment123
というのはNexusにデフォルトで用意されているデプロイ用のユーザーです。本運用する際には、パスワードの変更などをしておきましょう。
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<id>thirdparty</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
</settings>
この際にidが異なっていたり、アカウントが間違えていたりすると以下のように認証エラーが発生します。
Return code is: 401, ReasonPhrase: Unauthorized.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:
deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts:
Could not transfer artifact org.springframework:spring-web:jar:5.1.9.RELEASE
from/to thirdparty (http://localhost:8081/nexus/content/repositories/thirdparty/):
Failed to transfer file: http://localhost:8081/nexus/content/repositories/thirdparty/org/springframework/spring-web/5.1.9.RELEASE/spring-web-5.1.9.RELEASE.jar.
Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
デプロイしてみる
mvnのバージョンは3.3.1を利用しています。
Deployの仕方の詳細は公式をご覧下さい。
https://maven.apache.org/plugins/maven-deploy-plugin/usage.html
mvn -s ~/.m2/settings.xml deploy:deploy-file \
-DgroupId=org.springframework -DartifactId=spring-web \
-Dversion=5.1.9.RELEASE -Dpackaging=jar
-Dfile=/path/to/spring-web-5.1.9.RELEASE.jar -DrepositoryId=thirdparty \
-Durl=http://localhost:8081/nexus/content/repositories/thirdparty/
このようにNexusにデプロイすることができました。
最後に
権限を持っていればNexusの画面からも手動でアップロードは可能ですが、オペミスが発生することを考えるとオススメできません。
またsettings.xmlにパスワードの平文を記載したままでの本運用もオススメできないので、mavenが用意している暗号化も導入しましょう。
http://maven.apache.org/guides/mini/guide-encryption.html
以上
Author And Source
この問題について(mvn deployで認証エラー(Unauthorized)を解消する ~ デプロイ例と共に), 我々は、より多くの情報をここで見つけました https://qiita.com/xishan/items/6f97e824c14c0777f770著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .