Gradle SpringBoot 项目:从服务器收到状态代码 501:需要 HTTPS
Posted
技术标签:
【中文标题】Gradle SpringBoot 项目:从服务器收到状态代码 501:需要 HTTPS【英文标题】:Gradle SpringBoot Project : Received status code 501 from server: HTTPS Required 【发布时间】:2020-11-01 06:35:40 【问题描述】:我正在尝试使用 gradle 和 groovy 构建简单的 hello world spring-boot 项目。 当我运行“gradle clean build”时,我遇到了错误。
到目前为止我试过了,
-
虽然是一个 gradle 项目,但我还是将 maven 版本更新到了最新(3.6.3)。只是为了更安全。
我重新安装了我的 intelliJ IDE
我在 build.gradle 中将 maven url 添加为“https:”
经过上述步骤,我仍然遇到以下错误。我不确定我还缺少什么。 虽然我在 gradle 构建文件中给出了 'https:' url,但我不确定它从哪里获取非安全 url(http)。
Task :compileJava FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Could not resolve all dependencies for configuration ':detachedConfiguration1'.
> Could not resolve org.springframework.boot:spring-boot-dependencies:2.1.1.RELEASE.
Required by:
project :
> Could not resolve org.springframework.boot:spring-boot-dependencies:2.1.1.RELEASE.
> Could not get resource 'http://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.1.1.RELEASE/spring-boot-dependencies-2.1.1.RELEASE.pom'.
> Could not HEAD 'http://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.1.1.RELEASE/spring-boot-dependencies-2.1.1.RELEASE.pom'. Received status code 501 from server: HTTPS Required
我的 gradle 构建文件看起来:
plugins
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
id 'war'
group = 'com.own.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories
mavenLocal()
maven
url = 'https://repo.maven.apache.org/maven2'
dependencies
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation('org.springframework.boot:spring-boot-starter-test')
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
test
useJUnitPlatform()
【问题讨论】:
【参考方案1】:最后,我想出了在哪里将 maven url 更新为 gradle 项目的“https://*”。
$ vi ~/.gradle/init.gradle
然后我将 maven url 更新为安全协议(“https://...”)
allprojects
repositories
mavenLocal()
// Any Organization/Company specific repo url goes here
maven
url "https://repo1.maven.org/maven2"
经过上述步骤,它对我有用,并且能够成功构建 spring-boot 应用程序。
【讨论】:
这是您的问题所陈述的内容,也是您在明确完成的问题中所陈述的内容。【参考方案2】:使用start.spring.io,这是那里生成的build.gradle
的内容:
plugins
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'groovy'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories
mavenCentral()
dependencies
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.codehaus.groovy:groovy'
testImplementation('org.springframework.boot:spring-boot-starter-test')
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
test
useJUnitPlatform()
注意主要区别:
groovy
实际上是作为插件和依赖项存在的
Maven 存储库是安全的。如错误消息所述,您可以使用
这里的 https 端点
【讨论】:
感谢@cfrick 您的及时回复。 1. 我复制了你的 build.gradle 文件,但它没有工作。 2. 另外,我尝试在我现有的 build.gradle 中添加 groovy in plugins 块,但仍然没有成功 仍然,我遇到了与我最初的问题中提到的相同的错误。无法 HEAD 'repo1.maven.org/maven2/org/springframework/boot/…'。从服务器收到状态码 501:需要 HTTPS 您是否在某些限制性或公司防火墙后面,阻止您下载此类内容?例如。您是否尝试在浏览器中使用该 URL 并确保它是 https? @cfrick,他得到了一个 http 代码 501,这反映了服务器没有实现 HEAD 方法(repo Maven)。所以我猜防火墙没有问题? 感谢 @cfrick 和 M.Mas 帮助处理此案。我在我的系统中搜索了其他提到 maven url 的地方,发现它是在 init.gradle 中添加的(由我,可能很久以前)。然后,我在那里更新了安全 url(https://*),现在构建成功了。以上是关于Gradle SpringBoot 项目:从服务器收到状态代码 501:需要 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
springboot + mybatis + gradle项目构建过程
在 Spring Boot 中使用 Gradle 从 Swagger OpenAPI 生成 RestClient 存根
jenkins构建基于gradle的springboot项目CI采坑(采用jar方式部署)