Tipps für die Aufrechterhaltung einer internen Maven-Repository?
Ich bin daran interessiert, die Aufrechterhaltung einer Maven 2 repository für meine Organisation. Was sind einige der Hinweise und Fallstricke, die helfen würde.
Was sind die Richtlinien für die Benutzer zu Folgen, wenn die Einrichtung die standards zum Download oder veröffentlichen Ihre eigenen Artefakte in das repository, wenn die Freigabe Ihres Codes? Welche Arten der Steuerung/Regelungen haben Sie in der Platz für diese Art der Sache? Was tun Sie über es in Ihrem developer ' s guide-Dokumentation?
UPDATE: Wir haben Stand-up-Nexus und war sehr zufrieden mit es - folgten die meisten Sal-Richtlinien und hatte keine Probleme. Zusätzlich haben wir die eingeschränkte Implementierung von access und automatisierten build - /deployment von snapshot-Artefakte durch ein Hudson CI-server. Hudson kann die Analyse aller upstream - /downstream-Projekt Abhängigkeiten, so dass, wenn ein problem Zusammenstellung, testen, scheitern oder eine andere Verletzung verursacht den build zu brechen, keine Bereitstellung erfolgen. Müde sein zu tun, snapshot-Bereitstellungen in Maven2/Maven3, wie die Metadaten geändert hat zwischen den beiden Versionen. Die "Hudson nur" snapshot-deployment-Strategie wird dies vermeiden. Wir verwenden nicht die Release-Plugin, aber geschrieben haben einige Sanitär-rund um die Plugin-Versionen, wenn man den snapshot der Freigabe. Wir verwenden auch m2eclipse und es scheint zu funktionieren sehr gut mit Nexus, als aus der settings-Datei, die es können, siehe Nexus und weiß index Artefakt Informationen für die Suche von dort aus. (Obwohl ich hatte zu zwicken, einige dieser Einstellungen, um es vollständig zu index unsere interne snapshots.) Ich würde auch empfehlen, die Sie bereitstellen, eine source-jar mit Ihrer Artefakte als eine gängige Praxis wenn Sie interessiert sind, dies zu tun. Wir konfigurieren, die in einer super-POM.
UPDATE2: ich bin gekommen, über das Sonatype-whitepaper die details, die verschiedenen Phasen der Einführung/Reife, die jeweils mit unterschiedlichen Nutzung Ziele für ein Maven-Repository-manager.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde empfehlen, die Einrichtung eines nexus-server mit mindestens vier repositories. Ich würde nicht empfehlen, artifactory. Die Kostenlose version von nexus ist perfekt für die ersten dev-team von weniger als 20 in weniger als drei Gruppen. Wenn Sie mehr Benutzer als das, tut Euch selbst einen gefallen und zahlen für das Sonatype-release. Die LDAP-integration für sich selbst zahlt.
Konfigurieren von Nexus, um die folgenden für die interne repos
Haben eine gemeinsame settings.xml Datei, die anhand dieser vier und nur diese vier Quellen. Wenn Sie anpassen müssen über diese versuchen, eine gemeinsamen Teil der Einstellungen-Datei und verwenden Sie profile für die Unterschiede. Lassen Sie sich nicht Ihre Kunden nur Rollen Sie Ihre eigenen Einstellungen oder Sie werden am Ende mit code, der baut auf einem Rechner, aber nicht auf irgendeiner anderen Maschine.
Einen gemeinsamen proxy für Ihre Kunden. In Nexus, können Sie eine Reihe von Proxys, um die gemeinsame Maven Quellen (Apache, JBoss, Codehaus) und haben einen einzigen proxy ausgesetzt, um die internen clients. Dies macht das hinzufügen und entfernen von Quellen von Ihren Kunden viel einfacher.
Nicht mischen Internen und 3rd-party-Artefakte im gleichen repository. Nexus ermöglicht Ihnen das hinzufügen von jars zu einem internen repository über eine web-gui. Ich empfehle dies als Zugabe von Ihrem JDBC-Treiber und anderen externen code zu 3rd-party. Die UI ist ganz nett zu verwenden, wenn im Vergleich zu den meisten enterprise-software.
Die Definition einer gemeinsamen übergeordneten POM definiert die Internen snapshot und release-repos über die distributionManagement tag. Ich kenne eine Menge Leute sagen Sie nicht, dies zu tun. Und während ich frei zugeben, dass es gibt alle Arten von Problemen mit dabei, es klappt OK, wenn die clients nur Gebäude releases und snapshots bereitgestellt werden, um eine einzelne interne repository.
Wenn Sie ein vorhandenes mis-managed-Maven-repository, erstellen Sie einen 5. repos genannt Legacy und setzen die ganze repos gibt. Setzen Sie einen cron-task, um löschen Sie alte Dateien von legacy-sobald Sie ein Jahr alt. Das gibt allen ein Jahr zu verschieben, aus der es, und aktualisieren Sie Ihre poms.
Etablieren Sie ein einfach zu kleben, um Namenskonvention für interne Artefakte. Ich bevorzuge Gruppen-id des Abteilung.Funktion.Projekt und ein ArtifactId für das componentName. Für interne repositories, com/org/net und den Namen des Unternehmens dürfte irrelevant sein. Und falsch, wenn das Unternehmen ändert seinen Namen. Es ist weit weniger wahrscheinlich, dass die Vertriebs -, Buchhaltungs-und Inventar-Abteilung umbenannt.
Definitiv Nexus. 😛
Ich habe mit Nexus und Artifactory. Die Schnittstelle für die Nexus ist viel robuster, es ist viel mehr Konfigurationsmöglichkeiten, und natürlich, geschrieben von Sonatype, die repesents so ziemlich alles, was Maven gut.
Dass gesagt wird, Artifactory ist in Ordnung und praktikabel.
Verwenden Artifactory.
Ich bin mit Artifactory mich selbst und Liebe die Benutzeroberfläche und die einfache Implementierung/Wartung. Das heißt, ich habe noch nie verwendet, Nexus, und kann nicht wirklich helfen, mit einer richtigen feature-Vergleich.
Hier sind einige Dinge aus der Spitze von meinem Kopf, die ich wirklich mag über Artifactory (halten Sie im Verstand Nexus kann über diese Funktionen zu):
Gegeben, dass es wirklich nur zwei große Maven-Repository-Implementierung gibt, wenn Sie wirklich wollen, um sicherzustellen, dass Sie haben die richtige Wahl getroffen, würde ich empfehlen, versuchen, beide aus, und entscheiden Sie selbst, welcher Euch besser gefällt.
Vielleicht ist dies offensichtlich, aber für die Reproduzierbarkeit, die Entwickler sollten niemals überschreiben Artefakte, Sie sollte neue Versionen.
Dies gilt auch für upstream-repositories. Wenn Sie den download für Apache-commons-version 1.2.3, sollten Sie wirklich nie, Sie erneut herunterladen. Updates kommen von letzteren Versionen, nicht für bestehende Versionen.
Etwas anderes zu berücksichtigen:
http://archiva.apache.org/
Als die URSPRÜNGLICHE FRAGE (technische Aspekte zu berücksichtigen, um einen M2-repository), würde ich empfehlen, nur-Lesen-Benutzer für das surfen im repository und administrative Nutzer pro administrator (das heißt: eine nur-Lesen-Benutzer für alle Benutzer, die keine Administratoren sind).
Darüber hinaus würde ich empfehlen Generierung von backup-images in regelmäßigen Abständen (einmal pro Tag, vielleicht ?). Besonders wichtig ist, wenn das repository ist groß oder installieren Sie Ihre eigene Artefakte, die von Zeit zu Zeit.
Last, aber nicht wenigsten, wenn man eine neue remote-repositories, müssen Sie die Aufnahme/Ausschluss Filter so ein Artefakt Suche in der repository wäre auch schneller erledigt.
Gibt es viele weitere Fragen zu berücksichtigen, aber dies sind die führenden Fragen, die ich angetroffen habe, während die Verwaltung einer internen Maven-repository.
Für die Aufnahme, ich bin mit beiden Nexus und Artifactory; ich kann eindeutig sagen, dass beim Nexus ist sehr einfach und operative (obwohl ich manchmal Probleme habe mit der installation auf Ubuntu), Ihre Kostenlose version kann nicht konkurrieren mit Artifactory-community (kostenlos) edition.
Ohne Artifactory ist genial web-2-UI, sind Ihre wichtigsten Merkmale, wie security-management, regelmäßige backups und Barrierefreiheit Themen sind, die über die von Nexus.