【问题标题】:Merging maven .m2 repositories合并 maven .m2 存储库
【发布时间】:2011-11-02 23:43:30
【问题描述】:

我在离线网络中有一个 Maven 存储库。

我需要更新其内容并合并到另一个存储库中。

最好的方法是什么?我查看了 wagon 插件Wagon,但我担心可能有更好的方法。

我可以用离线存储库管理器替换我的本地存储库,但问题仍然存在,我必须使用来自在线源的定期合并来更新该存储库。

【问题讨论】:

    标签: java maven-2 repository


    【解决方案1】:

    Vincent's answer 是正确的,但我更强烈建议您不要在.m2/repository 目录中执行此操作。该目录是一个缓存,应该可以随时删除。您应该考虑设置一个存储库管理器(例如 Archiva、Nexus 或 Artifactory,或者只是一个 HTTP 服务器)并在其中托管存储库内容,这样您就可以让 Maven 管理.m2/repository 目录。

    【讨论】:

    • 能否澄清“那个目录是缓存”部分?如果它是唯一的存储库,它怎么能成为缓存?我还查看了 nexus,但没有看到合并到另一个 repo 的能力。
    • 在 Maven 中,远程存储库是规范源,本地存储库是从某个远程存储库检索到的内容的缓存。这是因为远程被设计为在用户之间共享,而本地不是。 Maven 将只使用那里的缓存进行操作,但是如果您从中删除内容,它希望能够再次从远程存储库中获取它们。如果其他用户不能这样做,构建将无法为其他用户工作,因为他们没有与您相同的本地存储库。
    • 明白了。问题澄清
    【解决方案2】:

    如果您有能力在操作期间摆脱所有元数据(应该使用您运行的下一个 mvn 命令恢复),只需使用 rsync。

    如果不强制构建具体存储库,请考虑使用Nexus 及其groups。

    【讨论】:

    • Vicent 你能澄清一下你所说的“具体”存储库是什么意思吗?
    • 我的意思是“抽象”的反义词。 Nexus 允许您定义作为外观的组,可能有许多存储库用于在幕后获取工件。因此,根据您的需要,拥有这种委托代理式存储库可能不是一种选择。我想你的问题可能是关于构建一个单一的存储库,你可以放在你的 USB 密钥上的类型......
    • 您的更新是关于定期合并:如果您的 Nexus 配置为代理更改的远程存储库,那么远程更改确实会合并。合并过程是 Nexus 的分组机制所固有的。
    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多