构建Maven时使用多个本地存储库
如何在构建一个包时将Maven配置为使用多个本地存储库?构建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
为空
我该怎么做?
基本上,你有正确的做法。您设置了第二个“远程存储库”,并允许它们填充通常在目录中找到的“本地存储库”
也就是说,本地和远程存储库之间存在一些细微的差异。只需将您的~/.m2/repository/
目录复制到本地安装的“远程”存储库中,可能无法获得您想要的结果。
您可能需要登录到远程回购站,或者至少通过Web界面浏览它以查看它与本地回购站之间的差异。基本上,本地回购存在微妙的变化,这有助于确定本地缓存是否比远程回收更有意义。对于“本地远程”,您需要模拟远程回购的文件设置,而不是本地的副本/克隆。
您列出远程存储库的顺序将控制您从哪个存储库接收工件。如果它在第一个存储库中找到,那么只要您使用的是现代Maven,就会从第一个存储库中获取该包。否则,您将从第二个回购中获得包装。
有时候人们想要一个远程仓库的本地仓库缓存。在这种情况下,我建议设置一个本地Artifactory实例,并将其配置为上游回购缓存镜像。
自从我做你想问的事情已经很长时间了,但我可以证实我已经做到了。我不记得其中的一个细节,但我记得从文件URL和ssh URL接近它。我记得其中一个为我的目的工作更好,但我不确定哪一个和为什么。
祝你好运!
但是,如果我已经有远程存储库呢? 我可以对Maven说要先检查存储库中的文件URL,然后检查其他吗? 是否有任何方法可以在'pom.xml'内指定远程仓库而不是'settings'。xml'为本地存储库? – sp41mer
对不起,我的评论很快,但错过了一些答案。我会更新它。 –
谢谢:) 此外,我认为找到了我的评论关于秩序的答案这里https://*.com/questions/5325407/how-to-set-order-of-repositories-in-maven-settings- XML – sp41mer