0

我正在使用 Spring Cloud Contract 1.0.2.RELEASE 并且能够在我的本地 Maven 存储库中发布 stuc。

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

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

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

我错过了什么?

4

1 回答 1

0

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

public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )

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

    RemoteRepository remote = request.getRepository();

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

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

如果文件不存在,则不会记录它,因此请确保您具有存储库管理器期望的 maven-metadata-local.xml :它应该在您在本地安装存根时创建回购。

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

于 2017-01-17T06:03:59.520 回答