Ответ 1
В версиях Maven до 2.1 нет возможности настроить клиента на таймаут, но вы можете настроить его для проверки обновлений чаще, если вы установите политику обновления. Это частично решает проблему.
Например:
<repository>
<id>myrepo</id>
<url>http://maven.mycompany.com/m2</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
Допустимые значения:
- всегда - всегда проверяйте, когда Maven запускается для более новых версий снимков.
- Никогда - никогда не проверяйте более новые удаленные версии. После этого можно выполнить ручные обновления.
- daily (по умолчанию) - проверка первого запуска дня (по местному времени)
- интервал: XXX - проверка каждые XXX минут
Еще одно соображение - это программное обеспечение, которое вы используете для размещения своего внутреннего репозитория. С менеджером репозитория, таким как Nexus, вы можете управлять всеми своими внешними соединениями удаленного репозитория через диспетчера и настраивать тайм-аут для этих удаленных подключений. Затем ваш клиент будет запрашивать только менеджер хранилища, который должен отвечать как можно быстрее как позволяют таймауты.
Update:
Если вы знаете, что зависимости не будут обслуживаться определенным репозиторием, вы можете разделить его на профиль, поэтому в этой сборке он не ссылается.
<profiles>
<profile>
<id>remote</id>
<repositories>
<repository>
<id>central</id>
<url>http://repo1.maven.org</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
...
</repositories>
</profile>
<profile>
<id>internal</id>
<repositories>
<repository>
<id>myrepo</id>
<url>http://maven.mycompany.com/m2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
...
</repositories>
</profile>
</profiles>
В приведенной выше конфигурации запуск пакета mvn -Premote не будет подключен к внутреннему репозиторию, поэтому тайм-аут не будет фактором.
Вы можете не указывать профили в каждой сборке, добавляя дополнительные настройки к своим настройкам:
<settings>
...
<activeProfiles>
<activeProfile>internal</activeProfile>
<activeProfile>remote</activeProfile>
</activeProfiles>
...
</settings>
Для Maven 2.1 вы можете установить таймаут, добавив конфигурацию на сервере в настройках Maven (~/.m2/settings.xml
по умолчанию), например:
<server>
<id>myrepo</id>
<configuration>
<timeout>5000</timeout> <!-- 5 seconds -->
</configuration>
</server>