如果您进行调试,您会看到在某些时候您会到达 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 解析会失败。