首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VersionResolutionException:未能解决版本发布

VersionResolutionException:未能解决版本发布
EN

Stack Overflow用户
提问于 2019-01-24 10:31:55
回答 1查看 834关注 0票数 3

突然,Maven无法使用版本RELEASE解决依赖关系。

例如:-

代码语言:javascript
复制
<dependency>
            <groupId>com.google.api-ads</groupId>
            <artifactId>ads-lib</artifactId>
            <version>RELEASE</version>
</dependency>

在maven安装时,我得到以下错误:-

代码语言:javascript
复制
 Caused by: org.eclipse.aether.collection.DependencyCollectionException: Failed to collect dependencies at com.google.api-ads:ads-lib:jar:RELEASE
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:291)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:316)
    at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:172)
    ... 24 more
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for com.google.api-ads:ads-lib:jar:RELEASE
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:245)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:198)
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:535)
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:519)
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:409)
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:363)
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:351)
    at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)
    ... 26 more
Caused by: org.eclipse.aether.resolution.VersionResolutionException: Failed to resolve version for com.google.api-ads:ads-lib:jar:RELEASE: Could not find metadata com.google.api-ads:ads-lib/maven-metadata.xml in local (C:\Users\ashwani.kumar\.m2\repository)
    at org.apache.maven.repository.internal.DefaultVersionResolver.resolveVersion(DefaultVersionResolver.java:300)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:231)
    ... 33 more
Caused by: org.eclipse.aether.transfer.MetadataNotFoundException: Could not find metadata com.google.api-ads:ads-lib/maven-metadata.xml in local (C:\Users\ashwani.kumar\.m2\repository)
    at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolve(DefaultMetadataResolver.java:247)
    at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolveMetadata(DefaultMetadataResolver.java:205)
    at org.apache.maven.repository.internal.DefaultVersionResolver.resolveVersion(DefaultVersionResolver.java:237)
    ... 34 more

另外,我无法看到依赖项https://mvnrepository.com/artifact/com.google.api-ads/ads-lib的任何发布版本

在进一步的探索中,我发现了https://www.baeldung.com/maven-dependency-latest-version一篇文章

根据它:-

废弃语法 Maven2还提供了两个特殊的元版本值来实现结果:最新版和发布版。 然而,这种遗留的升级方法在CI需要重现性的情况下造成了不可预测性。因此,在Maven3中,它们已被完全删除: 为了可重复构建,Maven 3.x不再支持在POM中使用这些元版本 除了版本的Maven插件,还有其他解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-11 07:40:28

TL;DR

尝试更新本地元数据,将-U arg传递给maven命令行:

代码语言:javascript
复制
 mvn -U install

在我的例子中,maven认为本地元数据是最新的,因此跳过了远程元数据的下载。

我在调试日志中看到了它:

代码语言:javascript
复制
[DEBUG] Skipped remote request for org.dbunit:dbunit/maven-metadata.xml locally installed metadata up-to-date.

但可悲的是,这不是真的。本地元数据如下:

代码语言:javascript
复制
<metadata>
  <groupId>org.dbunit</groupId>
  <artifactId>dbunit</artifactId>
  <versioning>
    <versions>
      <version>2.7.3</version>
    </versions>
    <lastUpdated>20220811072909</lastUpdated>
  </versioning>
</metadata>

而远程元数据是

代码语言:javascript
复制
<metadata modelVersion="1.1.0">
    <groupId>org.dbunit</groupId>
    <artifactId>dbunit</artifactId>
    <versioning>
        <latest>2.7.3</latest>
        <release>2.7.3</release>
        <versions>
            <version>2.2</version>
            <version>2.2.1</version>
            <version>2.2.2</version>
            <version>2.2.3</version>
            <version>2.3.0</version>
            <version>2.4.0</version>
            <version>2.4.1</version>
            <version>2.4.2</version>
            <version>2.4.3</version>
            <version>2.4.4</version>
            <version>2.4.5</version>
            <version>2.4.6</version>
            <version>2.4.7</version>
            <version>2.4.8</version>
            <version>2.4.9</version>
            <version>2.5.0</version>
            <version>2.5.1</version>
            <version>2.5.2</version>
            <version>2.5.3</version>
            <version>2.5.4</version>
            <version>2.6.0</version>
            <version>2.7.0</version>
            <version>2.7.1</version>
            <version>2.7.2</version>
            <version>2.7.3</version>
        </versions>
        <lastUpdated>20220213055459</lastUpdated>
    </versioning>
</metadata>

如您所见,远程元数据包含更多版本以及<release><latest>标记。当地没有包含它。

我想这就是为什么maven不能再检测到RELEASE版本的问题。但是LATEST版本很奇怪,即使元数据中没有<latest>标记。maven似乎通过查看release标记来确定RELEASE版本,但是对于LATEST版本,它会搜索<versions>列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54344527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档