# Eigenes Maven Repository via Apache HTTP



## P4G0 (23. Feb 2011)

Hallo Leute,

ich stecke grade bei einem Problem fest. Ich deploye meine Maven-Artifacts via SCP auf meinen vServer. Das Maven Repository ist per HTTP erreichbar. Wenn ich mit m2eclipse jedoch den Repository-Index aktualisieren will, bekomme ich folgende Fehlermeldung:


```
Unable to update index
```

Folglich kann ich meine Artifacts auch nicht in anderen Projekten nutzen. Wenn ich in die Log-Datei von Eclipse schaue, bekomme ich folgende Fehlermeldung heraus (unnötiges rausgekürzt):

```
!ENTRY org.maven.ide.eclipse 4 0 2011-02-23 00:42:12.814
!MESSAGE Unable to update index for techspread.snapshots|http://repo.techspread.de/snapshots
!STACK 0
java.io.IOException: Server returned status code 404: Not Found
[...]
Caused by: java.io.IOException: Server returned status code 404: Not Found
[...]
```

Ich kann mir den 404er-Fehler jedoch absolut nicht erklären - einen Proxy o.ä. nutze ich nicht. Wenn ich mein Repository mit dem offiziellen von Maven vergleiche, kann ich lediglich den Unterschied feststellen, dass einige SHA1- und MD5-Dateien auch Pfade beinhalten (beim offiziellen Maven-Repo), bei mir stehen überall nur die Hashes drin.

Muss das Directory-Listing in einer ganz bestimmten Form vorliegen, sprich muss ich meinem Apache Webserver eine ganz bestimmte Form beibringen für das Listing? Das ist der zweite kleine Unterschied zwischen meinem Repo und dem von offiziellen Maven-Repo.

Ich hoffe, es kann mir hier jemand helfen, ich habe schon unzählige Stunden damit verbracht, im Internet eine Fehlerlösung zu suchen :noe:

Danke schonmal
Patrick


----------



## P4G0 (23. Feb 2011)

Ach manchmal kann die Fehlerlösung doch recht schnell vorangebracht werden. In dem Apache-Log steht drin, dass die Ressource .index nicht gefunden werden konnte. Leider weiß ich nicht, wie man diese index-Datei erstellen muss. Kann mir da jemand weiterhelfen?


----------



## maki (23. Feb 2011)

Der Index ist nicht wichtig um die Artifakte nutzen zu können, ist eine hilfe wenn man zB. wie das m2eclipse plugin nach Artifakten suchen möchte, inkl. Vervollständigung.

Kannst du denn deine Artifakte aus deinem Repo referenzieren und werden sie gefunden?


----------



## hexx (23. Feb 2011)

Hallo,

du solltest einen der verfügbaren Repository Manager für Maven einsetzen (Artifactory, Nexus, Archiva). Diese generieren den von m2e benötigten Index [1]. 

-hexx

[1] Index of /pub/mirrors/maven2/dot-index/


----------



## P4G0 (23. Feb 2011)

@Maki: Leider nein, das ist ja mein Problem :-/
@Hexx: Archiva gefällt mir zwar, jedoch lastet der mir meinen vServer zu sehr aus. Und andere verwenden doch auch einfache Apache Webserver als Repo, wieso funzt das so nicht?


----------



## maki (23. Feb 2011)

Wie gesagt, die .index Datei ist optional und wird nicht gebraucht um das Repo zu nutzen und die Artifakte zu referenzieren.

Soltest mal die Verzeichnisstruktur und Dateien vergleichen zwischen Archiva und deinem eigenen Repo.


----------



## P4G0 (23. Feb 2011)

Archiva ist nicht mehr installiert und den dafür wieder aufzusetzen ist nun zu umständlich. Ihr könnt das Repo gerne mal anschauen: Index of /


----------



## hexx (23. Feb 2011)

Bei den großen öffentlichen Repositories sitzt Apache meist als Frontend vor dem eigentlichen Repository Manager. Aber wie maki schon sagte: Der index ist nur für das komfortable suchen und finden via m2e nötig. Das Repository an sich funktioniert auch ohne.

Ich persönlich nutze Nexus. Unter anderem auch deswegen, weil es den geringsten Bedarf an Arbeitspeicher hat.

-hexx


----------



## maki (23. Feb 2011)

P4G0 hat gesagt.:


> Archiva ist nicht mehr installiert und den dafür wieder aufzusetzen ist nun zu umständlich. Ihr könnt das Repo gerne mal anschauen: Index of /


Nö, keine Lust.

Du könntest auch einfach die Fehlermeldung in der Maven Konsole lesen bzw. hier Posten


----------



## P4G0 (23. Feb 2011)

Verstehe ich das richtig, dass m2clipse ohne die .index-Datei das Artifact nicht findet, prinzipiell aber verwenden können sollte, wenn ich es manuell hinzufüge...? Wird gleich ausprobiert und Nexus schaue ich mir auch mal an (der RAM-Hunger ist bei mir das einzige Argument gegen Archiva - CPU-Leistung hat der vServer genug).


----------



## maki (23. Feb 2011)

> Verstehe ich das richtig, dass m2clipse ohne die .index-Datei das Artifact nicht findet, prinzipiell aber verwenden können sollte, wenn ich es manuell hinzufüge...?


Wenn du damit den Wizard von m2eclipse meinst: Ja, nur der braucht die .index Datei, Maven braucht das nicht.


----------



## P4G0 (23. Feb 2011)

Au Backe, es klappt 

Aber wenn ich dennoch mein Repository durchsuchen könnte, wäre das schon nett... Gibt's da nicht eine simple Lösung per PHP? Sonst schau ich mir mal an, was beim offiziellen Maven-Repo so in .index produziert wird und bau das nach


----------



## P4G0 (23. Feb 2011)

Ich werde mir nun mal Nexus anschauen. Auf der Webseite wird ja mit 28MB RAM-Verbrauch geworben, das ist ja um längen besser, als Archiva 

Hat jemand ein gutes Tutorial darüber, wie ich Nexus per mod_jk über meinen Apache HTTP-Server ansprechbar machen kann?


----------



## hexx (23. Feb 2011)

Das Referenzhandbuch [1] hast du gefunden? Ich habe einfach wie im Buch beschrieben [2], per mod_proxy eine Weiterleitung eingerichtet.

-hexx

[1] Repository Management with Nexus | Sonatype
[2] 3.7.Running Nexus Behind a Proxy | Sonatype


----------



## P4G0 (23. Feb 2011)

Danke nochmal für den Hinweis auf Nexus. Macht genau das, was ich will und der RAM wird auch nicht ausgelastet :toll:


----------



## mvitz (24. Feb 2011)

Ein wenig Offtopic, aber was für einen vServer hast du und was läuft dort drauf? Ich überlege zur Zeit auch ob ich mir einen vServer für Hudson/Nexus/Sonar/SVN/Database holen soll.


----------



## P4G0 (24. Feb 2011)

Moin mvitz. Ich habe diesen vServer. Kann ich aber für RAM-lastige CI-Systeme nicht empfehlen, da sollte man schon mindestens 2GB dedizierten RAM haben. Kann netcup grundsätzlich sehr empfehlen.


----------

