java 拆分本地存储库Maven解析程序API

mklgxw1f  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(118)

我是Maven Resolver API的用户,很难找到任何关于API实现/类的文档,以便在实现“* 拆分本地存储库 ”和“ 区分缓存和本地安装的工件 *”时使用,如https://maven.apache.org/resolver/local-repository.html中所述。
我尝试实现的用例是一个Java客户端应用程序,它下载了两个本地存储库的工件,一个是预加载的只读缓存,另一个是安装了远程下载的工件(在只读缓存中找不到)的本地存储库。
首先,我想知道所描述的用例是否可以用当前版本的Resolver API解决?如果是这样的话,有没有代码(java)示例。Maven Artifact Resolver代码库中可能有一些JUBIT测试?
我当前使用的是解析程序1.8.2,但我很乐意升级到最新版本(1.9.2)。以下是我当前用于启动会话/LocalRepository的代码

DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();

 LocalRepository localRepo = new LocalRepository(repoBaseDir);
 session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
2ic8powd

2ic8powd1#

看起来ChainedLocalRepositoryManager才是您真正需要的:

DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();

LocalRepositoryManager cacheRepository = system.newLocalRepositoryManager(
        session, 
        new LocalRepository(cacheRepositoryDir)
);

LocalRepositoryManager rwRepository = system.newLocalRepositoryManager(
        session, 
        new LocalRepository(rwRepository)
);

LocalRepositoryManager chainedRepository = new ChainedLocalRepositoryManager(
        rwRepository, 
        Collections.singletonList(cacheRepository), 
        true
);

session.setLocalRepositoryManager(chainedRepository);

相关问题