我有一个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]
当我希望它超时/不使用镜像时如果找不到
这可能吗?
答案 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