【发布时间】:2022-01-19 01:29:20
【问题描述】:
我需要在我的 Grails 2.4.2 安装中将 log4j 更新到最新版本。
我在 BuildConfig.groovy 中指出这一点
dependencies {
...
compile 'org.apache.logging.log4j:log4j:2.17.1'
}
而且,存储库部分是这样的:
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
mavenLocal()
grailsCentral()
//mavenCentral()
mavenRepo 'https://repo1.maven.org/maven2/'
mavenRepo 'https://repo.maven.apache.org/maven2/'
mavenRepo 'https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j'
//uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
//mavenRepo "http://repository.codehaus.org"
//mavenRepo "http://download.java.net/maven/2/"
//mavenRepo "http://repository.jboss.com/maven2/"
}
我已经尝试取消注释所有已评论的存储库。并且我还添加了 Maven 页面中指示的存储库(如图所示)。
每次我尝试构建项目时,都会失败并出现以下错误:
Error |
Resolve error obtaining dependencies: Could not transfer artifact
org.apache.logging.log4j:log4j:jar:2.17.1 from/to grailsCentral
(http://repo.grails.org/grails/plugins): Permanent Redirect (308) (Use --stacktrace
to see the full trace)
我第一次尝试构建时,工件已下载,然后失败并出现上述错误。
运行grails dependency-report --stacktrace 会产生以下结果:
Resolve error obtaining dependencies: Could not transfer artifact org.apache.logging.log4j:log4j:jar:2.17.1 from/to grailsCentral (http://repo.grails.org/grails/plugins): Permanent Redirect (308) (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
org.eclipse.aether.resolution.DependencyResolutionException: Could not transfer artifact org.apache.logging.log4j:log4j:jar:2.17.1 from/to grailsCentral (http://repo.grails.org/grails/plugins): Permanent Redirect (308)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:384)
at grails.util.BuildSettings.doResolve(BuildSettings.groovy:514)
at grails.util.BuildSettings.doResolve(BuildSettings.groovy)
at grails.util.BuildSettings$_getDefaultTestDependencies_closure16.doCall(BuildSettings.groovy:588)
at grails.util.BuildSettings$_getDefaultTestDependencies_closure16.doCall(BuildSettings.groovy)
at grails.util.BuildSettings.getDefaultTestDependencies(BuildSettings.groovy:582)
at grails.util.BuildSettings.getTestDependencies(BuildSettings.groovy:563)
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.apache.logging.log4j:log4j:jar:2.17.1 from/to grailsCentral (http://repo.grails.org/grails/plugins): Permanent Redirect (308)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:367)
... 6 more
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.apache.logging.log4j:log4j:jar:2.17.1 from/to grailsCentral (http://repo.grails.org/grails/plugins): Permanent Redirect (308)
at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
... 8 more
Caused by: org.apache.http.client.HttpResponseException: Permanent Redirect (308)
at org.eclipse.aether.transport.http.HttpTransporter.handleStatus(HttpTransporter.java:458)
at org.eclipse.aether.transport.http.HttpTransporter.execute(HttpTransporter.java:283)
at org.eclipse.aether.transport.http.HttpTransporter.implGet(HttpTransporter.java:235)
at org.eclipse.aether.spi.connector.transport.AbstractTransporter.get(AbstractTransporter.java:59)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350)
... 13 more
有什么想法吗?也许 GrailsCentral 更改了 URL?
【问题讨论】:
-
FYI.. 最近有人问了几次类似的问题(部分原因是对哪些 log4j 版本受到最近的 log4j CVE 影响的误解)。其中之一是stackoverflow.com/questions/70349898/…。
-
@JeffScottBrown 我知道我使用的版本不受最新CVE的影响,但无论如何我必须更新。我已经看过您提到的那个问题(以及许多其他问题),但目前这些问题对我都没有用。
-
您正在尝试通过 http 解析需要通过 https 解析的工件。你能从repo.grails.org/grails/plugins解决吗?
-
“好的,那么,我该如何更改那个 URL?” - 您可以指定任何您喜欢的存储库 url,例如
mavenRepo "https://repo.grails.org/grails/plugins"。 “是否有一些文件解释了这些变化,并提供了适当的解决方案?” - 在grails.github.io/grails2-doc/2.4.2/guide/…有一些相关信息。 -
“我想我也应该评论 grailsCentral(),因为它不再有效” - 你可以删除它。除非重新配置服务器以支持 http,否则它将永远无法在该版本的 Grails 中工作,而且它不会。
标签: grails repository log4j2