JBoss’ Ticketmonster Tutorial – zuviel für Maven Repositories?

Das Vorhaben zum Wochenende, das Ticketmonster-Tutorial in Eclipse Juno mit JBoss Tools aufzusetzen, machte mich aufgrund ständiger Maven-Repository-Timeouts echt wahnsinnig. Ich bin nicht der Java/Maven-Crack, deshalb musste ich mich der Lösung wirklich annähern.

Vorab: Die beste Lösung besteht vermutlich darin, ein eigenes Maven-Repository aufzusetzen, z. B. mit Sonatype Nexus. Diese Lösung wollte ich jetzt ganz kurzfristig nicht umsetzen.

Die Fehlermeldung beim Versuch das Projekt in Eclipse zu erzeugen, war mehr oder weniger immer die gleiche.

screenshot_Eclipse_Errormessage_maven_repo

Die Urache für das Problem liegt offensichtlich im Verhalten gehosteter Maven-Repositories wie z. B. http://repo1.maven.org, nur eine begrenzte Menge HTTP-Requests zuzulassen, bevor sie “abregeln”. Dadurch läuft der Eclipse-JBoss-Tools-Maven-Projekterzeugungsprozess in einen Timeout, da benötigte Artefakte nicht mehr geladen werden können. Jetzt ist das lokale Repository selbst aber auch in einem etwas merkwürdigen Zustand, es ist echt schwer, es zu einem erneuten Downloadversuch zu überreden (force). Irgendwie ist es immer der Meinung, dass die bemängelte Ressource doch gecacht ist und kein Handlungsbedarf bestünde. Also das ist echt hakelig und definitiv verbesserungswürdig, mag sein, dass es Kniffe für Maven-Experten gibt, aber dass ist nicht anwenderfreundlich. Also wie habe ich mir geholfen:

1. Datei settings.xml im Maven-Verzeichnis ~/.m2 anlegen bzw. um Mirror-Eintrag erweitern. Genauer gesagt, habe ich gleich 3 Dateien mit 3 verschiedenen Mirror-Einträgen angelegt, da dieser Abregel-Mechanismus offenbar generell in den Repositories implementiert zu sein scheint (um große Downloads ganzer Repositories zu verhindern – immerhin ca. 180GB!). Hier die vollstänige settings.xml mit einem Mirror für das Maven central Repository:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<proxies/>
<profiles/>
<activeProfiles/>
<mirrors>
<mirror>
<id>Central</id>
<url>http://repo1.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, St. Louis-->
</mirror>
</mirrors>

</settings>

Hier noch zwei alternative Mirror für das Maven Central Repository:

<mirror>
<id>antelink.com</id>
<url>http://maven.antelink.com/content/repositories/central/</url>
<mirrorOf>central</mirrorOf>
<!-- France -->
</mirror>
<mirror>
<id>ibiblio.org</id>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, North Carolina -->
</mirror>

 

2. Verzeichnis ~/.m2/repository löschen.

3. Ein JBoss-Tools Java EE Web Project in Eclipse neu erstellen – siehe auch das JBoss Ticket-Monster Tutorial – dort ist das Schritt-für-Schritt beschrieben.

Wie erwartet tritt eine Fehmeldung auf, dass maven-resources-plugin 2.5 Ressource bzw. abhängige Ressourcen nicht geladen werden können, Ursache Timeout. (Überprüfung mit Browser bestätigte das auch: Das Repository lässt zeitlich begrenzt keine HTTP-Requests zu – Timeout).

4. In Datei ~/.m2/settings.xml einen alternativen Mirror für das Maven Central Repository eintragen.

5. ggf. Verzeichnis ~/.m2/repository/.cache löschen.

6. Die “Problemdateien” – siehe Fehlermeldung Bild oben – aus dem lokalen Repository löschen.(nicht gleich das ganze repository-Verzeichnis, da es definitiv sonst wieder hängenbleibt – mehrfach versucht!)

Also Das Verzeichnis gemäß Fehlermeldung ~/.m2/repository/org/apache/maven/plugins löschen.

7. Im Eclipse Projektkontextmenü Maven -> Update Project … auswählen, Haken bei Force Updates of Snapshots/Releases setzen und anschließend OK drücken.

screenshot_eclipse_maven_update

Die restlichen Dateien sollten nun vom alternativen Mirror-Repository nachgeladen werden.

Bei Bedarf Schritte 4 bis 7 mit alternativen Mirror-Einträgen in der Datei settings.xml wiederholen.

Alles in allem ist das ja ganz schöner Schrott, weniger was das eigentliche Abregel-Verhalten der Repositories angeht, sondern vielmehr die unmöglichen Anwenderfunktionen zum Beheben des Problems, ohne tiefere Maven-Kenntnisse und Improvisation geht hier mal gar nichts.

Na ja – vielleicht hilft das ja dem einen oder anderen :-)

 

Comments are closed.