今回は、「Gradle」の「repositories」に「HTTP」からはじまるURLを指定しているとき、ビルドなどが失敗して次のエラーが発生した場合の原因と解決方法を紹介していきます。
The supplied phased action failed with an exception.
Could not resolve all dependencies for configuration ':compileClasspath'.
Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven(http://example.domain)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.0/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details.
「build.gradle」の設定例は、次のようになります。「url」の指定が「http」になっています。
...
repositories {
maven {
url 'http://example.domain'
}
}
...
検証環境
検証に使用した環境/ライブラリを次に記載します。
- Java
- バージョン:11
- Gradle
- バージョン:7.0
- バージョン:6.8.3
原因
「Gradle」では、2020年1月以降からHTTPでアクセスしているサービスを順次廃止しています。「HTTP」を使用している通信では、悪意のある攻撃者により盗聴、改ざんなどのセキュリティの問題が発生する可能性があるためです。
検証環境では、「HTTP」からはじまるリポジトリを指定した場合は、次のような結果になりました。
バージョン | 処理結果 |
---|---|
6.8.3 | 正常終了 |
7.0 | 異常終了 |
検証結果から、「処理結果」が「異常終了」となるバージョンから「HTTP」を使用した場合は、エラーとなるような動作になっているようです。
解決方法
「Gradle」のバージョン6.0から追加された次のオプションを使用することで、「HTTP」を使用している場合でもエラーを回避できるようになります。
boolean allowInsecureProtocol
このオプションは、「HTTP」を使用している場合にリポジトリと通信できるかどうかを指定するために使用することができます。詳細のドキュメントについては、次の公式サイトのドキュメントを確認してください。
「build.gradle」の設定例は、次のようになります。「allowInsecureProtocol」に「true」を設定しています。
...
repositories {
maven {
url 'http://example.domain'
allowInsecureProtocol true
}
}
...
まとめ
「Gradle」の「repositories」に「HTTP」からはじまるURLを指定しているとき、エラーが発生したときの原因と解決方法を紹介しました。
参考資料
「Gradle」の「HTTP」サービス廃止について
「Gradle」の「HTTP」を利用するときの「repositories」の設定例について
「Gradle」の「repositories」に指定できる情報について(APIドキュメント)