【问题标题】:Multiple Maven Mirrors for the same repositories同一存储库的多个 Maven 镜像
【发布时间】:2012-06-25 23:21:13
【问题描述】:

作为一名顾问,我为多个客户工作。每个客户端都使用自己的内部 Maven 存储库,该存储库也设置为镜像 Central 和其他外部存储库。我需要在我的笔记本电脑上配置我的 maven 安装,以便当我为一个客户工作时,它可以利用他们的内部存储库来处理所有事情。

我原以为我可以利用配置文件来处理这个问题,但无法更改每个配置文件的镜像设置。

有人对如何处理这个 maven 配置有建议吗?

注意:这里有一个类似的问题:How do I configure maven to access maven central if nexus server is down?,但该问题涉及是否在来自镜像的 Central 之间切换。我需要的是 Central(和其他人)来自一个镜像或基于某些属性/设置/变量等的不同镜像。

【问题讨论】:

  • 我终于找到了另一个问题,它给了我足够的洞察力来回答我自己的问题。参考:link 所以,我所做的是在 URL 中使用 ${M2_MIRROR} 设置我的镜像定义,然后我可以设置一个环境变量以根据哪个客户端(或内部项目)指向正确的内部存储库我为之工作。
  • +1 非常有趣的问题!我也是这种情况,我想知道如何处理这样的问题...+1

标签: maven repository mirror


【解决方案1】:

创建两个shell别名:

alias build_at_home="mvn -s $HOME/.m2/home_settings.xml"
alias build_at_work="mvn -s $HOME/.m2/work_settings.xml"

“-s”选项便于明确说明要使用的环境设置文件。 我们在共享构建服务器上使用这种机制来确保每个项目构建都是隔离的。

显然在 Windows 上您可以创建一组批处理文件。

【讨论】:

  • 这似乎是对交换设置文件的解决方案的一个很好的改进。不过到目前为止,我认为我最喜欢环境变量解决方案,该值用于我的单个 settings.xml 的镜像设置中。
【解决方案2】:

我的项目中也有非常相似的要求。我创建了两个独立的settings.xml 文件,分别命名为settings_one.xmlsettings_two.xml,并将它们保存在MAVEN_HOME 中。根据我需要的文件,我有一个小脚本(Windows 上的 bat 文件),它用两个设置文件之一覆盖现有的 settings.xml。

del C:\Users\<username>\.m2\settings.xml
copy C:\Users\<username>\.m2\settings_one.xml C:\Users\tadigotl\.m2\settings.xml

【讨论】:

  • 我不想管理多个设置文件。我想我找到了一个适合我的解决方案。线索在我最初研究这个时没有发现的另一个问题中。在 OP 中查看我的评论
【解决方案3】:

我可以建议的最简单的解决方案是安装 git 并将您的 .m2/settings.xml(当然通过 .gitignore 忽略存储库本身)提交到 git 并为客户创建适当的分支。更改设置将由以下人员完成:

git checkout CUSTOMER_BRANCH

此外,任何更改都由 SCM 跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 2021-09-18
    • 2020-10-16
    • 2011-06-23
    • 2015-04-24
    • 2018-07-29
    相关资源
    最近更新 更多