私はHTTPSでリポジトリを持っているのsettings.xmlの構成にもかかわらず、Mavenの使用HTTPSを作ることはできません

ジョルジTsiklauri:

私は一日に何ができるのほぼ全体StackOverflowの、ApacheのWebサイトや、すべてを研究してきたが、この作業を取得するために管理することができませんでした。

私が持っているMaven 3.0.5Jdk8セットアップ(特定のスタックのためだ、とのバージョンが改訂されることはありません)ベイグラント環境内。私は承知しているのApacheそれ以外のMavenリポジトリのクライアントがサーバに話すことはありません、だけでHTTPSを使用するすべてのMavenリポジトリを強制するの決断。

私は私に必要なすべての設定を構成しているように思えます~/.m2/settings.xmlし、いくつかの非常に奇妙な理由で、私は任意のコマンドを実行したとき(任意のビルドフェーズは、言う、mvn cleanHTTPに、)Mavenのデフォルトをとのsettings.xml気にしない-ダウンロードの参照に、それはまだ試み/ HTTPプロトコルとの依存関係。

私の例settings.xml(簡単にするために、私は、プロジェクトの特定のものを取り出して、これだけを残したが、それはこれでも動作しません)

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                    https://maven.apache.org/xsd/settings-1.0.0.xsd">
<repositories>
  <repository>
    <id>central</id>
    <url>https://repo1.maven.org/maven2/</url>
  </repository>

  <repository>
    <id>central</id>
    <url>https://repo.maven.apache.org/maven2/</url>
  </repository>
</repositories>

そしてここで私は、テストコマンドで取得していますものですmvn archetype:generate(この問題は、他のビルドフェーズコマンドの永続的です)

[INFO]プロジェクトのためのスキャン...ダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom Mavenのクリーン・プラグイン:2.5:プラグインorg.apache.maven.plugins:Mavenのクリーン・プラグイン:org.apache.maven.plugins用のプラグインの記述子の取得に失敗しました[WARNING] 2.5またはその依存関係の1つが解決できませんでした:org.apache.maven.pluginsのためのアーティファクトの記述子の読み込みに失敗しました:Mavenのクリーン・プラグイン:jarファイル:2.5ダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-インストール・プラグイン/ 2.3 / Mavenのインストール-プラグイン2.3.pom[WARNING] org.apache.maven.pluginsのための記述をプラグインの取得に失敗しました:Mavenのインストール-プラグイン:2.3:プラグインorg.apache.maven.plugins:Mavenのインストール-プラグイン:2.3またはその依存関係の1つが解決できませんでした:org.apache.maven.pluginsのためのアーティファクトの記述子の読み込みに失敗しました:Mavenのインストール-プラグイン:jarファイル:2.3ダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-デプロイ-プラグイン/ 2.7 / Mavenの-展開-プラグイン2.7.pom [WARNING] org.apache.maven.plugins用のプラグインの記述子の取得に失敗しました:Mavenの-展開-プラグイン:2.7:プラグインorg.apache.maven.plugins:達人-deploy-プラグイン:2.7またはその依存関係の1つが解決できませんでした:Mavenの-展開-プラグイン::org.apache.maven.pluginsのためのアーティファクトの記述子を読み取ることができませんでしたjarファイル:2.7ダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.0/maven-site-plugin-3.0.pom [WARNING] orgのためのプラグインの記述子を取得できませんでした。 apache.maven.plugins:Mavenのプラグイン-サイト-:3.0:プラグインorg.apache.maven.plugins:Mavenのサイト-プラグイン:3.0またはその依存関係の1つが解決できませんでした。org.apacheのためのアーティファクト記述子の読み込みに失敗しました。 maven.plugins:Mavenのサイト-プラグイン:jarファイル:3.0ダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin -1.3.pom[WARNING] org.apache.maven.plugins用のプラグインの記述子の取得に失敗しました:Mavenの-antrun -プラグイン:1.3:プラグインorg.apache.maven.plugins:Mavenの-antrun -プラグイン:1.3またはその依存関係の1つが解決できませんでした:Mavenの-antrun-プラグインを:org.apache.maven.pluginsのためのアーティファクト記述子を読み取ることができませんでしたjarファイル:1.3ダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-アセンブリ・プラグイン/ 2.2-β-5 / mavenのアセンブリ・プラグイン-2.2-β-5.pom org.apache.maven.plugins用のプラグインの記述子の取得に失敗しました[警告]:Mavenのアセンブリ-プラグイン:2.2 -ベータ- 5:プラグインorg.apache.maven.plugins:Mavenのアセンブリ-プラグイン:2.2ベータ-5またはその依存関係の1つが解決できませんでした。org.apache.maven.pluginsのためのアーティファクトの記述子の読み込みに失敗しました:Mavenの-assembly-プラグイン:jarファイル:2.2ベータ-5のダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.1/maven-dependency-plugin-2.1.pom [WARNING] orgのためのプラグインの記述子を取得できませんでした。 apache.maven.plugins:Mavenの-プラグインの依存関係:2.1:プラグインorg.apache.maven.plugins:Mavenの依存性-プラグイン:2.1またはその依存関係の1つが解決できませんでした。org.apacheのためのアーティファクト記述子の読み込みに失敗しました。 maven.plugins:Mavenの依存性-プラグイン:jarファイル:2.1ダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.0/maven-release-plugin -2.0.pom[WARNING] org.apache.maven.pluginsのための記述をプラグインの取得に失敗しました:Mavenのリリース-プラグイン:2.0:プラグインorg.apache.maven.plugins:Mavenのリリース-プラグイン:2.0またはその依存関係の1つが解決できませんでした:Mavenのリリース-プラグイン::org.apache.maven.pluginsのためのアーティファクトの記述子を読み取ることができませんでしたjarファイル:2.0ダウンロード:http://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata。 xmlのダウンロード:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml [WARNING]メタデータorg.apache.maven.pluginsを転送することができませんでした/ Mavenの-のmetadata.xml中央へ/から(http://repo.maven.apache.org/maven2):転送ファイルに失敗しました:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata .xmlファイルリターンコードは次のとおりです。501、のreasonPhrase:HTTPS必須。[WARNING](中央へ/からのメタデータorg.codehaus.mojo / mavenの-のmetadata.xmlを転送することができませんでしたhttp://repo.maven.apache.org/maven2):転送ファイルに失敗しました:のhttp://repo.maven .apache.org / Maven2を/ ORG / Codehausの/モジョ/ Mavenの-のmetadata.xmlリターンコードは次のとおりです。501、のreasonPhrase:HTTPS必須。転写org.apache.maven.plugins /からのMaven-のmetadata.xmlに[警告]失敗http://repo.maven.apache.org/maven2ローカルリポジトリにキャッシュされたが、分解能はの更新間隔までは再試行されることはありません中央が経過したか、更新が強制されています。オリジナルエラー:中央へ/からのメタデータorg.apache.maven.plugins / mavenの-のmetadata.xmlを転送することができませんでした(http://repo.maven.apache.org/maven2):転送ファイルに失敗しましたhttp://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xmlリターンコードは次のとおりです。501、のreasonPhrase:HTTPS必須。[警告]から/達人-のmetadata.xml org.codehaus.mojo転送に失敗http://repo.maven.apache.org/maven2は、中央の更新間隔を有するまで、ローカルリポジトリにキャッシュされた、解像度が再試行されることはありません経過や更新が強制されています。オリジナルエラー:中央へ/からのメタデータorg.codehaus.mojo / mavenの-のmetadata.xmlを転送することができませんでした(http://repo.maven.apache.org/maven2):転送ファイルに失敗しました:のhttp://repo.maven .apache.org / Maven2を/ ORG / Codehausの/モジョ/ Mavenの-のmetadata.xmlリターンコードは次のとおりです。501、のreasonPhrase:HTTPS必須

何をすればよいでしょうか?あなたが見るように、HTTPを使用すると、私はそれに応じてHTTP 501取得します。

ジョルジTsiklauri:

私はこれで一日を過ごしてきたように、私はそれは経験、デバッグの結果と、この問題を解決する方法を共有する価値があると思います。

2つの問題がありました:

1)用のプラグインの記述子の取得に失敗しました[WARNING] ...(任意の名前)プラグインほぼすべてのビルドフェーズ中に警告を(クリーン、パッケージまたはその他)、のこと(重要>>)検索言う記述子またはその依存関係をプラグインは、(その意味プラグインではなく、プロジェクトの依存関係を!)成功しないだろう。

(この場合)その理由は、Mavenの試みが経由して、エンドポイント・マシン(リポジトリ)と通信することであるHTTP(あなたが質問者の引用に見るように)、という事実にもかかわらず(!)、私は私の設定のカスタマイズしたことを.m2\settings.xmlファイルにし、すべてのリポジトリ定義エントリが定義されているHTTPSで、それぞれ、Mavenのように思えるが経由して、すべてをしようとしなければならないHTTPSいいえ、それは使用しています..but HTTPをプラグインするために、とMavenリポジトリと任意のHTTP通信がされて1月、2020年の第15回以来禁止さ

私はこれを解決する方法を定義して設定することです<profiles/>し、<pluginRepositories/>として提案@carlspringが、私はその答えを少し詳しく説明して展開していました。だから、ここに私の準備ができているsettings.xml例:(念のために、私は両方の代替リポジトリを提供し、ノート、 -プロファイルとリポジトリを)

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"                                                                                                                                     $    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                        https://maven.apache.org/xsd/settings-1.0.0.xsd">

<profiles>
<profile>
   <id>ssl-profile</id>
   <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <repositories>
        <repository>
            <id>central-1</id>
            <url>https://repo1.maven.org/maven2</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>central-2</id>
            <url>https://repo1.maven.org/maven2</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</profile>
  <repositories>
    <repository>
      <id>central1</id>
      <url>https://repo1.maven.org/maven2/</url>
    </repository>
    <repository>
      <id>central2</id>
      <url>https://repo.maven.apache.org/maven2/</url>
    </repository>
  </repositories>
  </profiles>
</settings>

これが解決され、最終的にはMavenのこの構成を取り、経由してすべてのリポジトリに接続しようとするために開始された後HTTPS、私は別のものを持っていた-第二の問題を。

2)認証されていないピア続いリターンコードである:501のreasonPhrase:HTTPS必須。

これは少しトリッキーだったが、これを解決する方法は、トラストストアで再生することですcacertsファイル。まず、あなたはトラストストアファイルを持っているかどうかを確認cacertsし、それが空だかどうか!それは空にすることはできません、これは非常に重要です。以下のように思えるOpenJDK11し、他のいくつかのは、一部のWindows / Linuxディストリビューションでビルドしcacertsたファイルは、どちらか見つからないか、空です。しかし、私の観察によれば、中に存在していたOracleJDKビルドします。

  • Windows構築し、それがもとでなければなりません%JAVA_HOME%\lib\security\
  • Linuxビルドでは、それは(Linuxディストリビューションや、あなたのセットアップに応じて)異なる場合がありますが、私の場合には、それが下にあった/etc/ssl/certs(と私はそれは、Linuxの証明書がない、特にJavaの1、フォルダだと思います)。

あなたが見る(あなたがこの持っている場合は、最も可能性の高い表示された場合、ピアは認証されない問題を)あなたはどちらか持っていないことをcacertsファイルするか、それが空だ(単にファイルサイズを確認し、それは少数のビットよりも大きくする必要があります)、次のいずれかを実行できます

  • 単純にコピー&ペースト、既存のcacerts他のいくつかのJDK / JREビルドからファイルを。
  • 生成cacertsトラストストア・ファイルを、証明書(複数可)を追加し、それを(このケースでは、あなたがそう、多分それは単にコピー&ペーストして行くために簡単です、あなたが必要として、多くの証明書として追加する必要があります)

私はこのことができます願っています。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=478684&siteId=1