Java-Maven-solve Maven デプロイ時間 401 Reason Phrase Unauthorized エラー

Java-Maven-solve Maven デプロイ時間 401 Reason Phrase Unauthorized エラー

環境

  • Java JDK 1.8
  • メイブン 3.3.9

導入

プロジェクトは、他のプロジェクトが参照できるように、jar パッケージとしてパッケージ化してプライベート サーバーにアップロードする必要があります。このとき、mvn cleandeploy コマンドを実行する必要がありますが、実行中に 401 エラーが報告されます。

401エラーを解決する

エラーメッセージ

コマンドを実行します: mvn cleandeploy -DskipTests

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project xxxxx: Failed to deploy artifacts: Could not transfer artifact com.xxxxx:xxxxx:jar:spring
-1.0.10-20210812.035258-1 from/to nexus-snapshots (http://xxxx.com/nexus/content/repositories/snapshots): Failed to transfer file: http://xxxx.com/nexus/content/repositories/snapshots/com/.../spring-1.0.
10-SNAPSHOT/xxxxx-spring-1.0.10-20210812.035258-1.jar. Return code is: 401, ReasonPhrase: Unauthorized. -> [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
PS D:\...\xxxxx> mvn clean deploy -DskipTests

キーエラーメッセージ

  • 主要なエラー メッセージ 1: アーティファクトのデプロイに失敗しました
  • 主なエラー メッセージ 2: アーティファクト com.*:*:pom:* をスナップショット (http://dev-mvn.***.com/content/repositories/snapshots/) との間で転送できませんでした
  • 主なエラー メッセージ 3: リターン コード: 401、ReasonPhrase: Unauthorized. -> [ヘルプ 1]
  • キーの抽出エラー メッセージ: 転送できませんでした…スナップショットとの間で…リターン コード: 401、ReasonPhrase: Unauthorized。
  • 明らかに、サーバーは権限の問題によりこのプッシュを拒否しました。

解決

  • 開発環境で使用するMaven設定ファイルを確認する
    • アイデアを使っています
    • maven配置位置:File/Settings; Build,Execution,Deployment/Build Tools/Maven;
    • ユーザー設定ファイル: D:/java/maven/apache-maven-3.3.9\conf\settings.xml
  • settings.xml を変更し、次の構成を追加します。
<!--服务器元素包含配置服务器时需要的信息 -->
<servers>
    <server>
        <!--这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。-->
        <id>nexus-snapshots</id>
        <username>deployment</username>
        <password>123456</password>
    </server>
    ...
</servers>
  • mvn clean apply -DskipTests コマンドを再度実行すると、アップロードが成功しました。
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ mytest ---
Downloading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/maven-metadata.xml
Uploading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/mytest-spring-1.0.10-20210812.035231-1.jar
Uploaded: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/mytest-spring-1.0.10-20210812.035231-1.jar (127643 KB at 13522.8 KB/sec)
Uploading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/mytest-spring-1.0.10-20210812.035231-1.pom
Uploaded: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/mytest-spring-1.0.10-20210812.035231-1.pom (7 KB at 53.9 KB/sec)
Downloading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/maven-metadata.xml
Uploading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/maven-metadata.xml
Uploaded: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/maven-metadata.xml (803 B at 8.2 KB/sec)
Uploading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/maven-metadata.xml
Uploaded: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/maven-metadata.xml (297 B at 2.5 KB/sec)
Uploading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/mytest-spring-1.0.10-20210812.035231-1-sdk.jar
Uploaded: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/mytest-spring-1.0.10-20210812.035231-1-sdk.jar (602 KB at 3039.0 KB/sec)
Uploading: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/maven-metadata.xml
Uploaded: http://dev.xxx.com/nexus/content/repositories/snapshots/com/xxxx/spring-1.0.10-SNAPSHOT/maven-metadata.xml (1021 B at 8.4 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 37.694 s
[INFO] Finished at: 2023-08-22T11:56:51+08:00
[INFO] Final Memory: 73M/974M
[INFO] ------------------------------------------------------------------------

mvn package、install、deploy コマンドの違い

mvn package コマンド: プロジェクトのターゲット ディレクトリに Java パッケージを生成します

package を使用してプロジェクトをパッケージ化すると、プロジェクト ディレクトリにターゲット フォルダーが生成されます。
MVC プロジェクトなどの Web プロジェクトの場合、このフォルダーの下に war パッケージが生成され、サーバーの tomcat/webapps ディレクトリに配置されて実行されます。
Java プロジェクトの場合は、このフォルダーの下に jar パッケージが生成され、サーバー上の指定されたディレクトリに配置され、「java -jar jar パッケージ名」コマンドで実行されます。
通常、当社のサーバー導入サービスでは、パッケージ方式を使用してプロジェクトをパッケージ化します。

mvn install コマンド: Java パッケージをローカルの Maven ウェアハウスにインストールします

install メソッドを使用すると、プロジェクトが Maven 依存関係に変換され、ローカルの Maven ウェアハウスに保存されます。
たとえば、Spring Boot プロジェクトが mvn install コマンドを実行すると、jar はローカルの Maven ウェアハウスに保存されます。
たとえば、私が自分で設定した Maven パスは D:\java\maven\repository... です。
一般に、複数のプロジェクトでは、たとえば、プロジェクト a でプロジェクト b を使用する一部のメソッドは、プロジェクト b を依存関係として追加する必要があります。このとき、プロジェクト b は、install メソッドを使用してローカルの [maven] ウェアハウスにパッケージ化して提供する必要があります。プロジェクト a 依存インポート呼び出し。

mvndeploy コマンド: Java パッケージを中央ウェアハウスに公開します (注: Maven で権限を持ってプッシュ アカウント名とパスワードを設定する必要があります)

デプロイとインストールの主な違いは、インストールではプロジェクト jar パッケージがローカル ウェアハウスに配置されるのに対し、デプロイではプライベート サーバー ウェアハウスに配置されることです。
ローカル pom ファイルでプライベート サーバー ウェアハウス情報を構成した後、deploy コマンドを実行して、maven によって作成された jar パッケージをリモート リポジトリにアップロードします。これは、他の開発者やプロジェクトが共有するのに便利です。
Maven デプロイ コマンドが正常に実行された後、プライベート サーバーにログインしてクエリを実行すると、対応する jar パッケージが表示されます。

mvn スキップテストコード

上記のコマンドを直接実行すると、単体テスト コードがデフォルトで実行されます。単体テストをスキップするには、次のコマンドを使用します。

  1. mvn -DskipTests
  2. mvn -Dmaven.test.skip=true

違い

  • mvn クリーン パッケージ -DskipTests
    • テスト ケースは実行されませんが、テスト ケース クラスはコンパイルされ、対応するクラス ファイルが target/test-classes ディレクトリに生成されます。
    • mvn package -DskipTests を使用して単体テストをスキップしますが、コンパイルは続行します。
  • mvn clean package -Dmaven.test.skip=true
    • テスト ケースを実行せず、テスト ケース クラスをコンパイルしません。
    • maven.test.skip を使用すると、単体テストの実行だけでなく、テスト コードのコンパイルもスキップされます。

おすすめ

転載: blog.csdn.net/xxj_jing/article/details/132430681
おすすめ