由于 maven 中央存储库已移至 https,因此无法构建 grails 2.3.7 项目

Ali*_*une 6 https grails maven repo

由于 Maven 中央存储库已移至 https,因此我无法构建 2.3.7 grails 项目。我在这篇文章中尝试了建议: Requests to http://repo1.maven.org/maven2/ return a 501 HTTPS Required status and a body

但是我仍然有一个问题,因为 maven repo 是在框架 jars ( grails-aether-2.3.7-sources.jar ) 中编码的类是org.codehaus.groovy.grails.resolve.maven.aether.config。 RepositoriesConfinguration.groovy

RemoteRepository mavenCentral(Closure configurer = null) {
    final existing = repositories.find { ArtifactRepository ar -> ar.id == "mavenCentral" }
    if (!existing) {
        final repositoryBuilder = new RemoteRepository.Builder("mavenCentral", "default", "http://repo1.maven.org/maven2/")

        configureRepository(repositoryBuilder, configurer)
        final repository = repositoryBuilder.build()
        repositories << repository
        return repository
    }
    else {
        return existing
    }
}
Run Code Online (Sandbox Code Playgroud)

该文件是只读的。

我该如何解决这个问题?由于多种原因,我无法将项目迁移到新的 Grails 版本。这是我得到的错误。

16:14:10 + /opt/grails-2.3.7/bin/grails --stacktrace clean 16:14:13 | 加载 Grails 2.3.7 16:14:17 | 配置类路径 16:14:20 | 错误解决错误获取依赖项:无法读取 xalan:serializer:jar:2.7.1 的工件描述符(注意:堆栈跟踪已被过滤。使用 --verbose 查看整个跟踪。)16:14:20 org.eclipse.aether .resolution.ArtifactDescriptorException:无法在 org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:335) 16:14 读取 xalan:serializer:jar:2.7.1 16:14:20 的工件描述符: 20 在 org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:217) 16:14:20 在 org.eclipse.aether.internal.impl.DefaultDependencyCollector。http://repo1.maven.org/maven2/):需要 HTTPS (501) 16:14:20 at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:460) 16:14:20在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262) 16:14:20 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:234) :20 at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:320) 16:14:20 ... 10 more 16:14:20 引起:org.eclipse.aether.transfer.ArtifactTransferException :无法从/向 mavenCentral ( http://repo1.maven.org/maven2/ )传输工件 xalan:serializer:pom:2.7.1):需要 HTTPS (501) 16:14:20 at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43) 16:14:20 at org.eclipse.aether.connector.basic.BasicRepositoryConnector $TaskRunner.run(BasicRepositoryConnector.java:342) 16:14:20 at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67) 16:14:20 at org.eclipse.aether。 connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:649) 16:14:20 at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:247) 16:14:20 at eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:536) 16:14:20 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver。resolve(DefaultArtifactResolver.java:437) 16:14:20 ... 13 more 16:14:20 由:org.apache.http.client.HttpResponseException: HTTPS Required (501) 16:14:20 at org.eclipse .aether.transport.http.HttpTransporter.handleStatus(HttpTransporter.java:404) 16:14:20 在 org.eclipse.aether.transport.http.HttpTransporter.execute(HttpTransporter.java:298) 16:14:20 在 org .eclipse.aether.transport.http.HttpTransporter.implGet(HttpTransporter.java:250) 16:14:20 在 org.eclipse.aether.spi.connector.transport.AbstractTransporter.get(AbstractTransporter.java:59) 16:14 :20 在 org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:418) 16:14:20 在 org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:418) :337) 16:14:20 ...还有 18 个

Pra*_*eti 16

您必须在存储库下注释掉 mavenCentral() 并按照此处的建议添加相应的 https url:https : //support.sonatype.com/hc/en-us/articles/360041287334

例子 :

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

        grailsPlugins()
        grailsHome()
        mavenLocal()
        grailsCentral()

        //comment following line to prevent use of default http url
//        mavenCentral()

        //add following https counterparts
        mavenRepo 'https://repo1.maven.org/maven2/'
        mavenRepo 'https://repo.maven.apache.org/maven2/'
        //if by any chance you can't connect to https url use this insecure url
//      mavenRepo 'http://insecure.repo1.maven.org/maven2/'

        mavenRepo 'https://repo.spring.io/milestone'
    }
Run Code Online (Sandbox Code Playgroud)

我为 grails 2.3.11 和 java 1.7.0_242 尝试了这个,它对我有用。希望这可以帮助。