W wersjach Mavena przed wersją 2.1 nie ma możliwości skonfigurowania klienta na timeout, ale można skonfigurować go tak, aby sprawdzał aktualizacje rzadziej, jeśli ustawiono politykę aktualizacji. To częściowo rozwiązuje problem.
Na przykład:
<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>
Prawidłowe wartości to:
- zawsze - zawsze sprawdzić kiedy Maven jest uruchamiany na nowszych wersjach migawek
- nigdy - nigdy nie sprawdza, czy są nowsze wersje zdalnych. Po wyłączeniu można przeprowadzić aktualizacje ręczne.
- dziennie (domyślnie) - sprawdź na pierwszym biegu dnia (czasu lokalnego)
- przedział: XXX - sprawdź co XXX minut
Innym zjawiskiem jest używane oprogramowanie do organizacji wewnętrznego repozytorium . Za pomocą menedżera repozytorium, takiego jak Nexus, możesz zarządzać wszystkimi zewnętrznymi połączeniami do repozytorium zdalnego za pośrednictwem menedżera i konfigurować limit czasu dla tych połączeń zdalnych. Twój klient zapyta wtedy tylko menedżera repozytorium, który powinien zareagować tak szybko, jak pozwalają na to limity czasu.
Aktualizacja:
Jeśli znasz Zależności nie będą podawane przez danego repozytorium, można podzielić go na profilu, więc to nie jest wymieniony w tej kompilacji.
<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>
W powyższej konfiguracji, działa mvn pakiet -Premote nie łączy się z wewnętrznym repozytorium, więc limit czasu nie będzie czynnikiem.
można uniknąć konieczności określania profili na każdej budowie, dodając kilka dodatkowych config z ustawieniami:
<settings>
...
<activeProfiles>
<activeProfile>internal</activeProfile>
<activeProfile>remote</activeProfile>
</activeProfiles>
...
</settings>
Dla Maven 2.1 można ustawić limit czasu dodając konfigurację na serwerze w ustawieniach Mavena (~/.m2/settings.xml
domyślnie), na przykład:
<server>
<id>myrepo</id>
<configuration>
<timeout>5000</timeout> <!-- 5 seconds -->
</configuration>
</server>
Wygląda na http://www.jroller.com/mrdon/entry/making_maven_2_not_suck było kilka prób na to, ale nie mogę znaleźć sposobu korzystania z niego. – rado