Gradle找不到插件,Spring启动项目使用Spring初始值设定项初始化



使用spring initializer初始化了一个spring-boot 2.5.0项目和gradle(只提供了spring-web作为依赖项(。

gradlebuild/gradlebootRun总是失败,并出现以下错误:

What went wrong:
Plugin [id: 'org.springframework.boot', version: '2.5.0-SNAPSHOT'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'org.springframework.boot:org.springframework.boot.gradle.plugin:2.5.0-SNAPSHOT')
Searched in the following repositories:
maven(https://repo.spring.io/milestone)
maven2(https://repo.spring.io/snapshot)
Gradle Central Plugin Repository

设置渐变

pluginManagement {
repositories {
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
gradlePluginPortal()
}
}
rootProject.name = 'spring-boot'

build.gradle

plugins {
id 'org.springframework.boot' version '2.5.0-SNAPSHOT'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}

运行Windows 10,等级6.8.3,从命令行运行会产生相同的结果。请帮忙。

编辑:可以确认我没有代理。还尝试暂时禁用防火墙并运行,但没有成功。

运行gradle-调试构建导致以下

2021-03-26T12:28:35.484+0530 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Opening connection {s}->https://repo.spring.io:443
2021-03-26T12:28:35.484+0530 [DEBUG] [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator] Connecting to repo.spring.io/35.241.58.96:443
2021-03-26T12:28:35.484+0530 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Connecting socket to repo.spring.io/35.241.58.96:443 with timeout 30000
2021-03-26T12:28:35.501+0530 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Enabled protocols: [TLSv1.2]
2021-03-26T12:28:35.501+0530 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Enabled cipher suites:[TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
2021-03-26T12:28:35.501+0530 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Starting handshake
2021-03-26T12:28:35.519+0530 [DEBUG] [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-outgoing-13: Shutdown connection
2021-03-26T12:28:35.520+0530 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Connection discarded

日志末尾说结果成功?

Received result Success[value=org.gradle.launcher.exec.BuildActionResult@1f9ce3e] from daemon DaemonInfo{pid=9948, address=[<some address> port:55586, addresses:[/0.0.0.0]], state=Idle, lastBusy=1616741885172, context=DefaultDaemonContext[uid=<some uid>,javaHome=<my java home>,daemonRegistryDir=<my gradle dir>,pid=9948,idleTimeout=10800000,priority=NORMAL,daemonOpts=-XX:MaxMetaspaceSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xms256m,-Xmx512m,-Dfile.encoding=windows-1252,-Duser.country=US,-Duser.language=en,-Duser.variant]} (build should be done).

我认为这可能是SSL的问题,但我尝试在repo链接上使用http,但也不起作用。

事实证明,问题实际上是SSL,或者更确切地说是我的cacerts文件。

用buildscript替换插件块提供了更好的日志记录,包括以下内容:

Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

然后我找到了这个线索:https://github.com/AdoptOpenJDK/openjdk-build/issues/478

总之,它说OpenJDK的某些构建在默认情况下没有针对Windows的cacerts。果不其然,我的cacerts文件只有32字节长:(

我已经更新了我的OpenJDK版本,现在一切都很好。人们也可以从其他地方进口仙人掌。感谢所有回答问题的人。

话虽如此,如果只有插件块提供了更好的调试日志记录,问题就会更快地被发现。

最新更新