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 存根

使用Gradle推送SpringBoot项目源码到私有仓库

jenkins构建基于gradle的springboot项目CI采坑(采用jar方式部署)

使用 Spring Boot 从 Gradle 多模块项目构建的 Jar 不起作用

如何用IDEA创建SpringBoot Gradle多项目工程?