Maven .lastUpdatet im lokalen Repositority

StudentNeu

Mitglied
Hallo Leute,


ich hab mir ein Mavenprojekt aus dem svn geholt und nun das Problem, dass im lokalen Repositority einige jar und pom Dateien mit pom.lastUpdatet und jar.lastUpdatet enden, aber genau diese Dateien werden dann von meinem Programm nicht gefunden.

Wie kann ich das Problem beheben? Das ganze lokale Repositority einmal löschen, hab ich bereits versucht.
 

StudentNeu

Mitglied
Ok das problem war, dass ich ein externes repositoritie brauchte und die settings.xml angelegen musste.


ich hab jetzt probleme damit die settings.xml so zu schreiben, dass sie dass tut was ich möchte, zwar werden nach leeren des lokalen rep. ab und zu einige gewünschte jars etc geladen aber irgendwie nicht immer (wahrscheinlich weil ich den settings code versehentlich leicht geändert habe).

ich möchte drei reps. aus dem externen rep. laden und habe verständnisprobleme mit folgenden stichworten:

1. profile! brauch ich eins für jedes externe reps? warum haben sowohl repositorities ids als auch die profile an sich?? unter <servers> rufe ich nur die rep. id auf...

2. warum gibt es <repositority> als auch <pluginRepositority>? ich muss beides mit code füllen??

3.

[XML]

<snapshots>
<enabled>false</enabled>
</snapshots>

[/XML]

was bedeutet das? im test hat sich gezeigt, dass <repository> mit snaphots und zusätzlich <repository> ohne snapshots andere ergebnisse liefert, als nur ein <repository> ohne snaphots... das finde ich verwirrend...
 

Grizzly

Top Contributor
Ich bin mir jetzt nicht ganz sicher, ob ich Deine Fragen richtig verstanden habe. Aber ich versuche es mal:

In der settings.xml habe ich für unseren lokalen Nexus, welcher als Repository dient, folgende Einträge:
[XML]<settings>
[...]
<servers>
<server>
<id>repository</id>
<username><!-- Der Benutzername --></username>
<password><!-- Das Passwort --></password>
</server>
<server>
<id>snapshot</id>
<username><!-- Der Benutzername --></username>
<password><!-- Das Passwort --></password>
</server>
<server>
<id>releases</id>
<username><!-- Der Benutzername --></username>
<password><!-- Das Passwort --></password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Nexus Repository</name>
<url>http://<!-- Adresse des Nexus -->/nexus/content/groups/public</url>
</mirro>
</mirrors>
[...]
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
[...]
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>[/XML]
Um dann auf den Nexus deployen zu können, muss man in der pom.xml noch folgendes eintragen:
[XML]<project>
[...]
<distributionManagement>
<repository>
<id>release</id>
<url>http://<!-- Adresse des Nexus -->/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://<!-- Adresse des Nexus -->/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>[/XML]

Da Du aber keinen lokalen Nexus Server hast, der für Dich die 3 externen Repositories zusammenfasst (was auch eine Möglichkeit wäre), müsstest Du Doch einfach die Drei als "Mirrors" eintragen können, oder? In diesem Fall dürftests Du halt nicht [XML]<mirrorOf>*</mirrorOf>[/XML] schreiben.

Ich habe im Buch "Maven 2 - Eine Einführung, aktuell zur Version 2.0.9" von Kai Uwe Bachmann (ISBN 978-3-8273-2835-9) im "Anhang C - Häufig genutzte Repositories" folgendes Beispiel für das einbinden eines externen Repository gefunden:
[XML]<profile>
<id>sun</id>
<repositories>
<repository>
<id>java.net</id>
<url>https://maven-repository.dev.java.net/nonav/repository</url>
<layout>legacy</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>java.net</id>
<url>https://maven-repository.dev.java.net/nonav/repository</url>
<layout>legacy</layout>
</pluginRepository>
</pluginRepositories>
</profile>[/XML]
Dann musst Du das Profile noch aktivieren. Du kannst natürlich für jedes Repository ein Profile anlegen. Oder alle Repositories über ein Profil ansprechen. Die Frage ist in dem Fall, was Du machen willst.

<repositories> enthält die Repositories für die "normalen" Bibliotheken, währenddie Repositories unter <pluginRepositories> Maven Plugins enthalten.

Zu der Geschichte mit <snapshots>: Wie hier nachzulesen ist, steuerst Du darüber, ob Du Snapshots der Bibliotheken und/oder Maven Plugins aus dem Repository herunterladen willst oder nicht. Einen ähnliches Element gibt es auch für Releases.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben