多个Maven镜像用于相同的存储库

时间:2012-06-25 23:21:13

标签: maven repository mirror

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

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

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

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

3 个答案:

答案 0 :(得分:2)

创建两个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上你可以创建一组批处理文件。

答案 1 :(得分:0)

我的项目也有类似的要求。我创建了两个单独的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

答案 2 :(得分:0)

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

git checkout CUSTOMER_BRANCH

此外,SCM会跟踪任何更改。