gradle + codebuild:无法通过代理访问网络

gradle + codebuild: unable to access the web through the proxy

我在私有网络中 运行ning AWS Codebuild,为此我创建了文件 .gradle/gradle.properties 以使用代理,并且在其中我有以下值:

systemProp.https.proxyHost=<https-proxy-host>
systemProp.https.proxyPort=<https-port>
systemProp.http.proxyHost=<http-proxy-host>
systemProp.http.proxyPort=<http-port>
systemProp.http.nonProxyHosts=localhost|127.0.0.1

我正在使用 AWS 的 Ubuntu 标准映像版本 5.0 进行构建,但是当我 运行 ./gradlew clean build:

Downloading https://services.gradle.org/distributions/gradle-6.8.3-bin.zip

Exception in thread "main" javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.

老实说,我不确定 gradle 是否知道文件 .gradle/gradle.properties 或没有获取代理值,有什么想法吗?

确保检查 GRADLE_USER_HOME 环境变量。

如果未设置,默认路径为 USER_HOME/.gradle)

最坏的情况 Senario,只是为了确保它不是代理问题,

您可以将 gradle.properties 添加到您的项目中,在 build.gradle 旁边。

实际上有 3 个地方你可以 gradle.properties:

  1. USER_HOME/.gradle/gradle.properties 这对所有 gradle 项目都是全局的
  2. 在项目目录中,这是该项目的本地目录
  3. A 子项目目录

一旦您尝试在项目中使用 gradle 属性但问题没有解决,这可能是代理问题。

当您使用 gradlew 时,您可以尝试前往 ,

[project]/gradle/wrapper/gradle-wrapper.properties 如果尚不存在,请添加此内容,以及代理设置。

distributionUrl=http\://services.gradle.org/distributions/gradle-6.8.3-bin.zip

只需确保从 https 中删除 's'。

虽然这对某些用户来说可能看起来不太好,,接受的答案建议如下

sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java

然后让 gradlew 干净。