如何在构建一个软件包时将Maven配置为使用多个本地存储库?
我有两个文件夹,~/.m2/repository
(默认为Maven)和~/local_repo_tmp
,并希望实现以下内容:
如果Maven无法在~/local_repo_tmp
内找到某些内容,则必须从远程存储库下载并放入~/.m2/repository
,否则必须将副本从~/local_repo_tmp
添加到~/.m2/repository
pom.xml
。
我已尝试将以下内容添加到<repositories>
<repository>
<id>firstrepo</id>
<name>repo</name>
<url>file:///Users/myusername/local_repo_tmp</url>
</repository>
</repositories>
:
~/local_repo_tmp
但似乎它不起作用,因为它需要相同的时间来跟随:
~/.m2/repository
和~/local_repo_tmp
同时构建项目时
~/.m2/repository
为空~/.m2/repository
是 groceries.SelectMany(g => g.ItemTypes).Where(t => t.Weight == 1).ToList().ForEach(t => quantities.Add(t.Quantity));
之前的副本时
州,但GROUP BY
为空我做错了什么?
答案 0 :(得分:0)
基本上,你有正确的方法。您设置了第二个“远程存储库”并允许它们填充通常在~/.m2/
目录中找到的“本地存储库”
也就是说,本地和远程存储库之间存在一些细微差别。只需将~/.m2/repository/
目录复制到本地安装的“远程”存储库中,就可能无法获得所需的结果。
您可能需要登录远程仓库,或者至少通过Web界面浏览它以查看它与本地仓库之间的差异。基本上,本地仓库中有微妙的变化,这有助于确定本地缓存是否比远程更旧。对于“本地远程”,您需要模拟远程仓库的文件设置,而不是本地的副本/克隆。
列出远程存储库的顺序将控制从哪个存储库接收工件。如果在第一个存储库中找到它,只要您使用现代Maven,就可以从第一个存储库中获取包。否则,你将从第二个回购中获得包裹。
有时候人们想要一个他们使用的远程仓库的本地仓库缓存。在这种情况下,我建议设置一个本地Artifactory实例,并将其配置为上游存储库的缓存镜像。
我做了你所要求的事情已经有很长一段时间了,但我可以确认我已经开始工作了。我不记得其中一个细节,但我记得从文件URL和ssh URL接近它。我记得两个中的一个对我的目的更好,但我不确定哪一个和为什么。
祝你好运!