首页 > 解决方案 > 解决获取依赖项的错误:无法读取 - org.apache.http.client.HttpResponseException 的工件描述符:永久重定向 (308)

问题描述

我正在尝试在本地运行一个遗留系统(使用Grails 2.3.7JDK 7)进行开发,直到现在它仍然像往常一样工作。

我遇到了另一个错误,我解决了删除文件夹.m2.grails在家中的问题。之后,一些依赖项返回以下错误:

完整的日志在这里

Error |
Resolve error obtaining dependencies: Failed to read artifact descriptor for org.grails.plugins:tomcat:zip:7.0.52.1
Error |
Resolve error obtaining dependencies: Failed to read artifact descriptor for org.grails.plugins:scaffolding:zip:2.0.2

Caused by: org.apache.http.client.HttpResponseException: Permanent Redirect (308)
    at org.eclipse.aether.transport.http.HttpTransporter.handleStatus(HttpTransporter.java:404)
    at org.eclipse.aether.transport.http.HttpTransporter.execute(HttpTransporter.java:298)
    at org.eclipse.aether.transport.http.HttpTransporter.implGet(HttpTransporter.java:250)
    at org.eclipse.aether.spi.connector.transport.AbstractTransporter.get(AbstractTransporter.java:59)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:418)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:337)
    ... 60 more

可能我遗漏了一些东西,但插件似乎在repo.grails.org 存储库的同一个地方。

我要问的是如何解决这个问题,所以如果可能的话,我可以解决这个问题。

目前,我通过复制我的同事.m2.grails文件夹部分解决了该错误,但是当我更改某些依赖项时,BuildConfid.groovy此错误再次出现。我的同事还删除了主文件夹中的.grailsand .m2,并且发生了同样的错误。

BuildConfig.groovy

grails.servlet.version = "3.0" // Change depending on target container compliance (2.5 or 3.0)
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.work.dir = "target/work"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
//grails.project.war.file = "target/${appName}-${appVersion}.war"

grails.project.dependency.resolver = "maven" // or ivy
grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        // specify dependency exclusions here; for example, uncomment this to disable ehcache:
        // excludes 'ehcache'
    }

    log "debug" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    checksums true // Whether to verify checksums on resolve
    legacyResolve false

    repositories {
        inherits true // Whether to inherit repository definitions from plugins

        grailsPlugins()
        grailsHome()
        mavenLocal()
        grailsCentral()
        // mavenCentral()
        // mavenRepo "http://repository.codehaus.org"
        mavenRepo "http://download.java.net/maven/2/"
        // mavenRepo "http://repository.jboss.com/maven2/"
        mavenRepo "http://download.java.net/maven/2/"
        mavenRepo "http://mavensync.zkoss.org/maven2"
        mavenRepo "http://insecure.repo1.maven.org/maven2/"
    }

    dependencies {
        compile "net.sf.ehcache:ehcache-core:2.4.6"
    }

    plugins {
        build ":tomcat:7.0.47"
        compile ':cache:1.1.1'
        runtime ":jquery:1.10.2.2"
        runtime ":resources:1.2.1"
        compile ":rest-client-builder:2.1.1"
    }
}

grails.server.port.http = 8082

标签: mavengrails

解决方案


您的存储库现在需要使用 https。试试下面的这些例子:

repositories {
    mavenRepo "https://repo.grails.org/grails/core"
    mavenRepo "https://repo.grails.org/grails/plugins"

我还必须使用 Java 8 来下载它们。由于 2.3.7 不支持 Java 8,您可以将 grails 升级到支持 Java 8 的 2.4.x 或 2.5.x。或者您也可以在使用 Java 7 尝试在 Java 7 中启用 TLS 1.2 时尝试使用 TLS 1.2:

java -Djdk.tls.client.protocols=TLSv1.2


推荐阅读