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 解析将失败。
我正在使用 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 解析将失败。