Spring 云合同:无法解析本地存储库中最新版本的存根

Spring Cloud Contract : not able to resolve latest version of stubs in local repo

我正在使用 Spring Cloud Contract 1.0。2.RELEASE 并且我能够在我的本地 Maven 存储库中发布这些文件。

在消费者方面,我然后配置我的测试:

@AutoConfigureStubRunner(ids = {"com.myGroup:myArtifactt:+:8080"}, workOffline = true)

"+" 应该意味着我将在我的本地存储库中获得最新版本,但它无法解决依赖关系。但是,如果我给出精确版本而不是 "+" ,那么它就可以工作。

我错过了什么?

如果你进行调试,你会看到在某个时候你到达 org.eclipse.aether.internal.impl.SimpleLocalRepositoryManager class(对我来说位于 aether-impl-1.0.2.v20150114.jar ), 其中有这个方法:

public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )

要解析本地仓库中的版本,它将尝试在本地的 artifact 目录下找到一个 maven-metadata-local.xml 文件Maven 存储库(下面的 else 块):

    RemoteRepository remote = request.getRepository();

    if ( remote != null )
    {
        path = getPathForRemoteMetadata( metadata, remote, context );
    }
    else
    {
        path = getPathForLocalMetadata( metadata );
    }

    File file = new File( getRepository().getBasedir(), path );

如果 file 不存在,它不会被记录,因此请确保你有 maven-metadata-local.xml 存储库管理器期望的位置它是:它应该在您在本地存储库中安装存根时创建。

有时您只有远程的,即 maven-metadata.xml - 在这种情况下,jar 解析将失败。