Maven Mirror - 如果镜像主机不可用,如何绕过?

时间:2012-05-16 22:26:35

标签: maven vpn

我有一个maven镜像存储库(Archiva) e.g。

<settings>
   <mirrors>     
        <mirror>
        <id>archiva</id>
        <mirrorOf>*</mirrorOf>
        <url>http://myMirrorHost:8080/archiva/repository/internal</url>     
    </mirror>
       </mirrors>
       ...

然而,这是VPN的背后,有时我宁愿不使用它/无法连接到VPM

问题是在VPN外部构建时,我收到此错误

  

myMirrorHost:未知主机myMirrorHost - &gt; [帮助1]

当我希望它超时/不使用镜像时如果找不到

这可能吗?

3 个答案:

答案 0 :(得分:3)

我有类似的情况,我将镜像设置更改为镜像中心,而不是*:

<mirrors>     
 <mirror>
  <id>archiva</id>
  <mirrorOf>central</mirrorOf>
  <url>http://myMirrorHost:8080/archiva/repository/internal</url>     
 </mirror>
</mirrors>

然后在配置文件中,我定义了另一个存储库,例如ibiblio上:

<profile>
  <id>myprofile</id>

 <activation>
  <activeByDefault>true</activeByDefault>
 </activation>

  <repositories>
    <repository>
      <id>ibiblio.org</id>
       <name>ibiblio Mirror of http://repo1.maven.org/maven2/</name>
       <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url> 
    </repository>
  </repositories>  
</profile>

现在当镜像中找不到某些东西,或者镜像主机无法访问时,maven会尝试另一个存储库(这是一个中心镜像)。

答案 1 :(得分:2)

尝试在未连接到VPN的情况下以脱机模式运行构建

mvn -o clean package

另一种选择是在连接到其他网络时使用第二个Maven设置文件:

mvn -s $HOME/.m2/settings-alternative.xml clean package

在这种情况下,我还建议指定备用本地存储库位置(在设置文件中),以避免构建混淆。

答案 2 :(得分:1)

我总是使用类似于Mark's anser的方法,我编写了一个脚本来处理复制不同配置或删除那些配置。

基本用法是首先编写~/.m2/settings.<config>.xml形式的配置文件,其中<config>是配置的名称,然后通过调用setmvn [config]设置配置,而不指定将删除配置到位。这将符号链接到配置文件,因此如果您的工具修改当前配置,它将修改当前配置文件。

#!/bin/bash

[ "$#" -lt 2 ] || {
    echo "Usage: $(basename $0) [profile-name]" >&2
    exit 1
}

if [ -z "$1" ] ; then
    if [ -f ~/.m2/settings.xml ] ; then
        echo "Configuration removed."
        rm -f ~/.m2/settings.xml
    else
        echo "Configuration not in place, nothing to do." >&2
    fi
else
    if [ -f ~/.m2/"settings.$1.xml" ] ; then
        [ -f ~/.m2/settings.xml ] && rm -f ~/.m2/settings.xml
        ln -s ~/.m2/"settings.$1.xml" ~/.m2/settings.xml
        echo "Configuration set to $1."
    else
        echo "Configuration not found: $1" >&2
        exit 2
    fi
fi