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



由于maven中央存储库已迁移到https,我无法构建2.3.7 grails项目。我尝试了这篇帖子上的建议:请求http://repo1.maven.org/maven2/返回501 HTTPS Required状态和正文

然而,我仍然有一个问题,因为maven repo是在框架jar中编码的(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
}
}

此文件是只读的。

如何解决此问题?由于以下几个原因,我无法将项目迁移到新的Grails版本。这就是我犯的错误。

16:14:10+/opt/ggrails-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:20org.eclipse.aether.resolution.ArtifactDescriptorException:未能读取xalan:serializer:jar:2.7.1 16:14:20的工件描述符org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptor Reader.java:335)16:14:20org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescripttorReader.java:217)16:14:20org.eclipse.aether.internal.impl.DefaultDependencyCollectionr.process(DefaultDependentyCollection.java:466)16:14:20org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependency Collector.java:261)16:14:20org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:317)16:14:20grails.util.BuildSettings.doResolve(BuildSettings.groovy:513)16:14:20在grails.util.BuildSettings.doResolve(BuildSettings.groovy)16:14:20在grails.util.BuildSettings$_getDefaultBuildDependencies_closure17.doCall(BuildSettings.groovy:774)16:14:20grails.util.BuildSettings$_getDefaultBuildDependencies_closure17.doCall(BuildSettings.groovy)16:14:20grails.util.BuildSettings.getDefaultBuildDependencies(BuildSettings.groovy:768)16:14:20grails.util.BuildSettings.getBuildDependencies(BuildSettings.groovy:673)16:14:20原因:org.eclipse.aether.resolution.ArtifactResolutionException:无法将工件xalan:serializer:pom:2.7.1从mavenCentral传输到mavenCentral(http://repo1.maven.org/maven2/):需要HTTPS(501)16:14:20org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactSolutionr.java:460)16:14:20org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactSolutionr.java:262)16:14:20org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactSolutionr.java:239)16:14:20org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptor Reader.java:320)16:14:20。。。10 more 16:14:20原因:org.eclipse.aether.transfer.ArtifactTransferException:无法将工件xalan:serializer:pom:2.7.1从mavenCentral传输到mavenCentral(http://repo1.maven.org/maven2/):需要HTTPS(501)16:14:20org.eclipse.aether.connecter.basic.ArtifactTransportListener.transferFailed(ArtifactTransportLister.java:43)16:14:20org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:342)16:14:20org.eclipse.aether.util.concurrent.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)16:14:20org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecution.execute(BasicRepositoryConnector.java:649)16:14:20org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:247)16:14:20org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactSolutionr.java:536)16:14:20org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactSolutionr.java:437)16:14:20。。。13更多16:14:20原因:org.apache.http.client.HttpResponseException:需要HTTPS(501)16:14:20org.eclipse.aether.transport.HttpTransporter.handleStatus(HttpTransporter.java:404)16:14:20org.eclipse.aether.transport.HttpTransporter.execute(HttpTransporter.java:298)16:14:20org.eclipse.aether.transport.HttpTransporter.implGet(HttpTransporter.java:250)16:14:20org.eclipse.aether.spi.connecter.transport.AbstractTransporter.get(AbstractTransporter.java:59)16:14:20org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:418)16:14:20org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:337)16:14:20。。。再增加18个

您必须在存储库下注释掉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'
}

我在grails 2.3.11和java 1.7.0_242中尝试过这一点,它对我很有效。希望这能有所帮助。

我正在处理Grails 2.3.11,我刚刚添加了以下存储库,并将任何其他外部存储库URL更改为https:

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

此外,由于Java 8中TLS默认值为1.2,我不得不使用Java 8。遗憾的是Grails 2.3.7不支持Java 8。

最新更新