Вопрос по maven – Maven Mirror - как обойти, если зеркальный хост недоступен?

3

У меня есть зеркальное хранилище Maven (Archiva) например

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

Однако это за VPN, и иногда я не использую его / не могу подключиться к VPM

Проблема при сборке за пределами VPN, я получаю эту ошибку

myMirrorHost: Unknown host myMirrorHost -> [Help 1]

Когда я хотел бы вместо этого тайм-аут / не использовать зеркало, если не найдено

Это возможно?

Ваш Ответ

3   ответа
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 пробует другой репозиторий (который является зеркалом центрального).

2

Попробуйте запустить сборку в автономном режиме, когда не подключен к VPN

mvn -o clean package

Другим вариантом является наличие второго файла настроек Maven для использования при подключении к другой сети:

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

В этом случае я также рекомендую указать альтернативное местоположение локального хранилища (в файле настроек), чтобы избежать путаницы при сборке.

спас меня Я пытался несколько месяцев назад, но не мог обойти это, это здорово!
1

Я всегда использовал подобный подход кОтметить ансер для которого я написал скрипт для копирования различных конфигураций или удаления той, что есть.

Основное использование - сначала написать файл конфигурации в форме~/.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

Похожие вопросы