Schöner Bauen mit Maven und Nexus Johannes Caspary | [email protected]

Software-Entwicklung jeder Phase entstehen so weitere Doku- im Allgemeinen mente wie Lastenhefte, Modelle, Quell- code und Testfälle. Viele Informatiker erinnern sich wahr- Der oben beschriebene Software- scheinlich noch aus dem Studium oder entwicklungsprozess bezieht sich vor der Ausbildung an den Softwareent- allem auf größere Projekte, aber auch wicklungsprozess und seine Phasen. mittlere und kleine profitieren von Besonders anschaulich – wenn auch einem strukturierten Vorgehen. Im etwas veraltet – ist hierbei das Wasser- universitären Bereich werden deshalb fallmodell mit den folgenden Phasen: die Prinzipien der Softwareentwicklung • Anforderungserhebung: Klärung der berücksichtigt. Frage, was benötigt wird • Entwurf: Formalisierung (Modellie- rung) der Anforderungen Automatisierungsmöglichkeiten • Implementierung: Umsetzung des in der Entwicklung Entwurfs • Test: Klärung der Frage, ob die Soft- Die Anforderungserhebung ist der Aus- ware die richtigen Dinge tut (und das gangspunkt für den gesamten Entwick- richtig) lungsprozess. Eine ausführliche und • Verteilung: Phase der Produktivschal- zielorientierte Analyse ist zur Erstellung tung der Software von Software dringend erforderlich. Zwar existieren diverse Werkzeuge zur Die meisten Entwicklungsmodelle ba- professionellen Anforderungserhebung sieren im Wesentlichen auf diesen Ab- und zum Anforderungsmanagement, läufen. Allerdings gibt es bei den agilen aber in der Regel hat man es mit ein- Entwicklungsmethoden die Forderung, fachen Textdokumenten zu tun – was oft Test und Implementierung in der Rei- auch völlig ausreicht. henfolge umzudrehen (siehe zur test- In der Stufe des Entwurfs wird das getriebenen Entwicklung u. a. [1]). Nach noch relativ ungenaue Bild der gefor- Ablauf aller Phasen entsteht ein soge- derten Software formalisiert. Dabei nanntes Artefakt – die fertige Software. bedient man sich der Visualisierung in Ebenso herrscht Konsens, dass man Form von graphischen Modellen – seien Skripte zur Automatisierung des Kompi- die genannten Schritte wiederholen sie nun statisch, ablauf- oder datenfluss- lierens und Testens von Quellcode beschleu- muss. Es ist unrealistisch anzunehmen, orientiert. Auch wenn die Modelle einen nigen die Entwicklung neuer Software. dass qualitativ hochwertige Software hohen Detaillierungsgrad und Nähe Neben dem weit verbreiteten „im Ganzen“ in einem Durchlauf ent- zur Implementierung besitzen können, existieren für die -Entwicklung zahl- wickelt werden kann. Man spricht bei findet etwa die graphische Programmie- reiche Alternativen, von denen Apache der Wiederholung der Phasen von einer rung noch relativ selten Anwendung. Maven besonders hervorgehoben wird. Ihre iterativen Entwicklung. Dabei wird die Im Wesentlichen geht es hier noch da- Stärken können diese Buildwerkzeuge in Software sukzessive vervollständigt. Die rum, „Bilder zu malen“, die eine Brücke Verbindung mit Repository-Managern wie Ergebnisse der Iterationen bezeichnet zwischen den Anforderungen und der Sonatype Nexus entfalten. man als Inkremente. Zum Abschluss späteren konkreten Umsetzung bauen.

30 cms-journal 34 / Juni 2011 Erst in der Stufe der Implemen- der sich von anderen verbreiteten Build- Wie die Namen der Phasen erkennen tierung können wir auf Grundlage des werkzeugen wie Ant [7] oder make unter- lassen, unterstützt Maven nicht nur im Quellcodes mit der Automatisierung scheidet.2 Rahmen der Implementierung das Kom- des Entwicklungsprozesses beginnen. Ein wesentliches Prinzip von Maven pilieren, sondern auch die Schritte des Abhängig vom Ausmaß der Automati- ist die sogenannte „Convention Over Tests (test für Unit-Tests und integration- sierbarkeit des Prozesses unterstützen Configuration“ [8]. Gemeint ist damit, test für Tests auf Komponenten) und der Werkzeuge die Phasen Implementie- dass man aus einer Konvention heraus Verteilung (install zur Speicherung auf rung, Testen und Verteilung. An dieser für die Projektstruktur plausible Stan- dem lokalen und deploy zur Verteilung Stelle kommen sogenannte Buildwerk- dardwerte annimmt. So werden beispiels- auf einen entfernten Rechner). zeuge zum Einsatz. Ein Build umfasst weise Java-Klassen, die im Namen das den Ablauf gewisser Routinen im Er- Wort „Test“ enthalten, automatisch als Auflösen von Projektabhängigkeiten – stellungsprozess, wie Kompilierung und Unit-Test3 interpretiert [9]. Dennoch ist Dependency Management das Ausführen von Tests, und endet mit eine Anpassung der Variablen, wie der der Erstellung eines Artefakts. Im Kon- Verweise auf die Quelltextordner oder Die Definition von Abhängigkeiten eines text von Java handelt es sich üblicher- das Outputverzeichnis, explizit in der Projekts zu anderen Artefakten (insbe- weise um JAR- oder WAR-Dateien.1 Projektbeschreibungsdatei möglich. Bei sondere JAR-Dateien), erfolgt über die Im Folgenden wird als Beispiel der Entwicklung kann man sich nun Projektbeschreibungsdatei pom.xml. eines Buildwerkzeugs entscheiden, ob man die vorgegebene Um die Wiederverwendbarkeit zu er- erläutert. Um Maven im Vergleich zu Struktur übernimmt oder sie dem eige- höhen, können sie durch Vererbung anderen Werkzeugen abzugrenzen, wird nen Projekt anpasst. oder Import an andere Projekte weiter- auch auf die derzeit verbreiteten Alter- Im Zusammenhang mit Maven be- gegeben werden. nativen kurz eingegangen. gegnet man häufig dem BegriffPlugin [10]. Die Auflistung dient nicht nur der Ein Maven-Plugin ist ein Zusatzpro- reinen Beschreibung der Software. Maven gramm, das den funktionalen Kern von nutzt die Informationen vor allem für Das Buildwerkzeug Maven Maven erweitert. Tatsächlich stellt der seinen Mechanismus zur Auflösung von Maven-Kern nur ein leichtgewichtiges Abhängigkeiten (Dependency-Management). Maven [2] ist ein Projekt der Apache Framework zur Ausführung von Plugins Ausgehend von den gefundenen Abhän- Software Foundation [3] und dient zur dar, die fast sämtliche den Buildprozess gigkeiten sucht Maven nach Artefakten Umsetzung der Buildautomatisierung betreffenden Aufgaben übernehmen [11]. in Verzeichnissen mit einer definierten für Java-Projekte. Das aktuelle Release Struktur, den sogenannten Repositories. zur Zeit der Erstellung dieses Artikels ist Standardphasen in Maven Zuerst wird das lokale Repository auf Maven 3.0.3, aber auch das Release 2.2.1 dem Rechner durchsucht. Ist dort das ist noch weit verbreitet. Eine sehr gute Der Buildprozess in Maven wird, ähnlich gesuchte Artefakt nicht in der korrekten Anleitung zur Software auf Deutsch wie beim Wasserfallmodell, in Phasen Version vorhanden, sucht Maven in findet sich unter [4]. eingeteilt. Im Standardlebenszyklus einem entfernten Repository. Zur Ausführung von Maven gibt es eines Builds, der hier verkürzt wiederge- Standardmäßig lädt Maven fehlende die Kommandozeilenanwendung mvn, geben ist, sind die Phasen Validierung Artefakte von seinem zentralen Reposi- die für die Verwendung in Skripten hilf- (validate), Kompilieren (compile), Test tory [13] herunter. Dadurch erhält man reich ist. Allerdings lässt sich Maven (test), Paketierung (package), Integra- zwar immer den aktuellen Versionsstand, auch über Plugins in Entwicklungsum- tionstest (integration-test), Verifikation besitzt aber wenig Einfluss auf die aus- gebungen wie Eclipse [5] oder IntelliJ (verify), Installation (install) und Vertei- gewählten Artefakte. Durch Anpassung IDEA [6] integrieren. lung (deploy) definiert 12[ ]. der Maven-Einstellungen kann aber auch Das wichtigste Dokument für ein Die Phasen werden sequenziell auf alternative Repositories verwiesen Maven-Projekt ist die Projektbeschrei- abgearbeitet. So bewirkt das Kommando werden. bungsdatei pom.xml. Dort werden zen- mvn test, dass neben der Phase test auch tral die Eigenschaften des Projekts validate und compile ausgeführt werden, Alternativen zu Maven konfiguriert. Maven interpretiert bei nicht aber package. Durch die strikte seiner Ausführung lediglich diese Kon- Vorgabe des Ablaufs des Buildprozesses Abgesehen von allen Vorzügen, die figuration und braucht keine zusätz- kann Maven, im Vergleich zu Ant, in Maven zweifelsohne bietet, gibt es auch lichen Skriptanweisungen. Damit ver- Standardanwendungen auf die explizite Kritikpunkte. Zum einen gibt Maven tritt Maven einen deklarativen Ansatz, Vorgabe von Zielen und deren Abhän- durch das Prinzip „Convention Over gigkeiten verzichten. Configuration“ Projekten eine recht 1 JAR = Java Archiv, Dateiformat zur Paketierung von strikte Form vor. Sicher sind strukturelle Java-Bibliotheken; WAR = Web Archiv, Dateiformat 2 Dennoch können Ant-Skripte auch in Maven inte- und ablauftechnische Anpassungen zur Speicherung von servletbasierten Java- griert werden. Webanwendungen. Die Archive liegen jeweils im 3 Unit-Tests testen die Teilfunktionalität eines Pro- auch mit Maven möglich, sie erfordern ZIP-Format vor. gramms (z. B. Methoden). allerdings unter Umständen einen

Schöner Bauen mit Maven und Nexus 31 relativ hohen Aufwand.4 Zum anderen fakte gespeichert, die ebenfalls hinterlegte selbstverwaltetes Repository der Zugriff gilt die Methode, das Projekt über XML- Projektbeschreibungsdatei pom.xml auf diese proprietären Pakete ermöglicht Dateien zu beschreiben, als zu statisch enthält die Metadaten. werden, ohne die rechtlichen Vorgaben und unhandlich.5 Bei der Lokalinstallation speichert zu verletzen. Neben Maven existieren weitere Maven seine durch das Dependency-Ma- Die Verwendung eines eigenen Re- Build-Managementwerkzeuge, die mit nagement aufgelösten Abhängigkeiten positories hat für eine Organisation viele unterschiedlichen Strategien die genann- in ein Repository auf dem Rechner. Vorteile. Man besitzt dadurch nicht nur ten Schwachpunkte angehen. Zur Erhö- Nicht dort befindliche Dateien werden Kontrolle über den Inhalt (z. B. durch hung der Flexibilität verwenden andere anschließend in dem öffentlich verfüg- Aussperren ungewollter Artefakte), son- Werkzeuge objektorientierte Skriptspra- baren, zentralen Repository durchsucht. dern steuert auch die Verfügbarkeit über chen zur Definition des Buildprozesses. Es gibt aber Argumente, die dafür spre- das eigene Netzwerk. Wäre das zentrale Verbreitet sind vor allem Ruby (z. B. chen, die vorgegebene Struktur anzu- Repository nicht zu erreichen, könnten buildr [16] und Raven [17]) und Groovy passen und auch eigene Repositories im ggf. für diesen Zeitraum keine Maven- (z. B. Gradle [18] und Gant6 [19]). Netzwerk zu hinterlegen. Projekte gebaut werden. In Hinblick auf das Dependency- Ein ganz wesentlicher Punkt ist der Management ist [20] ein in- Gründe für eigene Repositories Sicherheitsaspekt. Öffentliche Reposi- teressantes Projekt. Dieses Werkzeug tories besitzen immer das Gefahren- wird in Kombination mit Ant genutzt Software-Entwicklung, vor allem bei potenzial, dass die bezogenen Artefakte, und adressiert das Problem der einheit- mittleren und größeren Projekten, ist auf welchen Wegen auch immer, schad- lichen Verwaltung von JAR-Dateien Teamwork. Projekte und Bibliotheken hafte Software enthalten. Eine restriktive über Repositories. So kann es sowohl müssen untereinander immer abge- Verwaltung des Repository-Managers auf Maven-Repositories zugreifen, als stimmt sein und auf verteilten Rechnern hilft hierbei. auch Repositories mit Ivy-spezifischer die gleiche Datenbasis nutzen. Das Ein weiterer Vorteil liegt in der Mög- Struktur verwalten. lokale Speichern von Dateien reicht lichkeit, das selbst verwaltete Repository Für sich alleine zählt Ivy nicht zu nicht aus. als Proxy zu anderen öffentlich verfüg- den Buildwerkzeugen, da es nur eine Was die Verwaltung von Änderungen baren Repositories zu nutzen. Dadurch Teilfunktionalität umsetzt. Allerdings auf Dateisystemebene betrifft, existieren werden die für die eigenen Projekte be-­ nutzt z. B. Gradle das Dependency-Ma- leistungsfähige Versionskontrollsysteme nötigten Artefakte zwischengespeichert, nagement von Ivy, und auch Ant kann wie SVN [21], Git [22] oder Mercurial [23]. was sich in weniger Anfragen und Down- durch die Verwendung von Ivy-Tasks Im Rahmen des AGNES-Teams [24] wird loads bei den zentralen Repositories erweitert werden. Buildr verfügt über der SVN-Dienst des Computer- und Me- niederschlägt. Bei kleineren Projekten ein eigenes Dependency-Management, dienservice (CMS) verwendet [25]. Um und wenigen Nutzern ist der Effekt je- welches mit Maven-Repositories kompa- jedoch in vollem Umfang das im vorigen doch eher gering. tibel ist. Abschnitt besprochene Dependency- Management zu nutzen, muss man in Sonatype Nexus und andere Kombination mit Maven auf Repositories Repository-Manager für Maven Beschreibung Repositories zurückgreifen. Es sind zwei Problemstellungen zu Insbesondere aufgrund der genannten Repositories im Zusammenhang mit lösen: 1. Wie veröffentliche ich eigene Vorteile hinsichtlich der kontrollierten Maven sind als Softwareverzeichnisse Artefakte? Und 2. Wie bekomme ich Verfügbarmachung eigener sowie frem- mit einer definierten Struktur und Artefakte, die nicht in öffentlich verfüg- der, lizenzrechtlich eingeschränkter Arte- beschreibenden Metadaten zu verstehen. baren Repositories verwaltet werden? fakte, wurde in der Abteilung „DV in der Das Maven-Verzeichnislayout kann auch Zu Punkt 1 gäbe es grundsätzlich Verwaltung“ des CMS die Einrichtung durch andere Buildwerkzeuge gelesen die Möglichkeit, eigene Artefakte in das eines internen Repositories beschlossen. werden. In das Repository werden die zentrale Maven-Repository hochzuladen. Da die manuelle Pflege eines solchen durch den Buildprozess erstellten Arte- Dies hätte allerdings die Konsequenz, Repositories aufwändig und fehlerträch- dass die ganze Welt darauf Zugriff hat. tig ist, wurde hierfür ein Repository-Ma-

4 Das Programmieren eigener Plugins und deren Wenn das nicht gewünscht ist, kann die nager ausgewählt. Bei dieser Installation Einbindung in den Buildlebenszyklus ist eine Einrichtung eines organisationseigenen handelt es sich um einen Testeinsatz im Möglichkeit, siehe auch unter [14]. 5 Für Maven 3 existiert das Polyglot Maven-Projekt Repositories mit beschränktem Zugriff kleinen Umfeld, daher wurde ein frei [15], das ermöglichen will, dass die Projektbeschrei- die Lösung sein. verfügbares Programm genutzt. bung nicht mehr ausschließlich in XML, sondern Zu Punkt 2 gibt es bei einigen Arte- In seiner Funktionalität sollte der auch alternativ in Groovy und ähnlichen Sprachen ermöglicht wird. Bis zur Fertigstellung des Artikels fakten zudem lizenzrechtliche Einschrän- Repository-Manager als Proxy für gab es keine Umsetzung dieser Funktionalität für kungen, die der Veröffentlichung über entfernte Repositories, als Speicherort Maven 3. 6 Bei Gant dient Groovy lediglich zum Ersatz der die zentralen Repositories entgegen- für unternehmensinterne JARs und als XML-Struktur von Ant. stehen. In diesen Fällen kann über ein Verwaltungstool für die Zugriffsrechte

32 cms-journal 34 / Juni 2011 auf die einzelnen Repositories und Arte- erfolgt standardmäßig über eine Daten- standardisierten und breit verfügbaren fakte dienen. Das Programm sollte auf bank, alternativ können die Artefakte JAR-Bibliotheken wie JDOM für die XML- Debian Linux-Servern lauffähig sein und aber auch direkt im Dateisystem abge- Verarbeitung oder für das Logging nach Möglichkeit über eine einfach zu legt werden. Artifactory unterstützt keine war das voreingestellte Maven-Reposi- bedienende Weboberfläche verfügen. Maven 1-Clients und verbraucht wegen tory völlig ausreichend. Auf dem Markt existieren vor allem umfangreicher Indizierung mitunter Im Laufe der Zeit ergaben sich aller- drei Repository-Manager: Apache Archiva mehr Speicherplatz auf dem Datenträger dings Probleme durch den Ansatz, die [26], Artifactory [27] und Sonatype Nexus als Nexus.8 JAR-Dateien ausschließlich aus dem [28] (früher Proximity). Allen ist gemein- Der Dritte im Bunde ist Apache zentralen Repository zu beziehen. Zur sam, dass sie in Java programmiert und Archiva. Dieses Top-Level-Projekt von besseren Wiederverwendung gliederte als WAR Webarchiv lauffähig sind. Zur Apache wurde 2005 gestartet und im No- man selbst entwickelte Funktionalitäten Bedienung des Repository-Managers vember 2007 das erste Produktionsre- in eigene Projekte aus und benötigte be­sitzen alle eine Weboberfläche, die lease veröffentlicht. Es handelt sich um eine Möglichkeit zur Speicherung. Wei­ einen leistungsfähigen, auf Lucene [29] ein vollständig frei verfügbares Werk­zeug terhin wollte man Artefakte nutzen, die basierenden Suchmechanismus zur Ver­ unter der 2.0. Archiva aus lizenzrechtlichen Gründen nicht fügung stellt. ist etwas funktionsärmer als Nexus OSS öffentlich verfügbar sind. Diese mussten Der erste verfügbare Maven Reposi- und Artifactory, insgesamt aber vergleich- ungünstigerweise von Hand in die Pro- tory-Manager war Sonatype Nexus. So- bar. Das Repository wird wie bei Nexus jekte einfügt werden, was den Nutzen natype bietet eine Open-Source-Version im Dateisystem auf dem Server gespei- des Dependency-Managements für die unter der Bezeichnung Nexus OSS an chert. Zur Verwaltung der Daten nutzt Entwicklung stark reduzierte. und wird unter der Lizenz GNU Affero Archiva standardmäßig eine Derby DB. Um die gewünschte Flexibilität wie­- GPL Version 3 (AGPLv3) bereitgestellt. Eine ausführliche Gegenüberstel- derzuerlangen, wurde ein eigenes, zu­- Er erfüllt die angegebenen Kriterien lung der Eigenschaften der genannten nächst auf das AGNES-Team beschränk­ und verfügt darüber hinaus über drei Repository-Manager findet sich auch tes Repository eingesetzt. Die Wahl fiel eine LDAP-Integration, eine einfache unter [36]. auf den Sonatype Nexus OSS, vor allem Adressierungsmöglichkeit der Reposito- aufgrund der umfangreichen Dokumen- rygruppen über eine einzige URL sowie Maven und Sonatype Nexus tation. Nach erfolgreichen lokalen Tests geplante Tasks (z. B. zum Aufräumen im Einsatz und einem positiven ersten Eindruck alter Snapshots) [30]. Das Repository wurde diese Anwendung als Repository- wird auf dem Dateisystem im Maven Im AGNES-Team des CMS wird schon Manager weiter untersucht. Abbildung 1 2-Layout7 abgelegt. seit längerem für Java-Projekte nach zeigt schematisch den stufenweisen Zu- Ein großer Vorteil von Nexus ist die Möglichkeit Maven eingesetzt. Der größte griff auf das Nexus-Repository von einem umfangreiche Dokumentation, die in Vorteil liegt im Dependency-Manage- lokalen Rechner. Form eines kompletten Buches in HTML ment. Für die ersten Projekte mit relativ und PDF vorliegt [32]. Dies erleichtert Installation und Konfiguration erheblich. Als kommerzielles Pendant wird der Nexus Professional vertrieben (2995 US- Dollar für 50 Nutzer). Er verfügt über erweiterte Suchfunktionen, die Möglich- keit der Projektwebseitenintegration und feingranulare Einstellmöglichkeiten in Hinsicht auf Validierung und Verifikati- on von Artefakten [33]. Seit 2006 wird der Repository- Manager Artifactory von JFrog angebo- ten. Auch dieser teilt sich in eine frei verfügbare und eine kommerzielle Ver- sion auf. In puncto Interoperabilität und Funktionalität übertrifft Artifactory den Nexus OSS, z. B. durch die hierarchische Gliederung von Nutzergruppen und erweiterte Suchoptionen. Die Speiche-­ Abb. 1: Infrastruktur und Suche nach Artefakten mit Nexus rung der Artefakte und ihrer Metadaten

8 Ein interessanter Schlagabtausch zwischen den 7 siehe Erläuterung hierzu unter [31]. Entwicklern findet sich unter [34] und [35].

Schöner Bauen mit Maven und Nexus 33 Als Server für Nexus wurde von der Literaturverzeichnis [23] Mercurial SCM. Wintech-Gruppe des CMS ein virtueller http://mercurial.selenic.com/ Debian-Server eingerichtet. Die Anwen­- [1] Beck, K.: Test-Driven Development By [24] Humboldt-Universität zu Berlin. dung selbst ist passwortgeschützt inner- Example. Addison-Wesley, 2003 Webseite des AGNES-Portals: htt- halb des Universitätsnetzes zu erreichen. [2] Apache Maven Project. http://maven. ps://agnes.hu-berlin.de Die SSL-Verschlüsselung9 erfolgt über apache.org/ [25] SvnBenutzerHowTo. http://twiki.cms. ein durch den PKI-Service [37] der HU [3] The Apache Software Foundation. hu-berlin.de/svn/svnbenutzerhowto. bereitgestelltes signiertes Server-Zerti- http://apache.org/ html fikat. [4] Maven 2.2.1 und Maven 3.0. http:// [26] Archiva: The Build Artifact Repository Inzwischen nutzt auch das Projekt www.torsten-horn.de/techdocs/ma- Manager. http://archiva.apache.org/ HU-IAM10 der Abteilung „DV in der ven.htm [27] JFrog – Home of Artifactory Binary Verwaltung“ Nexus intensiv. Auf diese [5] Eclipse – The Eclipse Foundation open Repository Manager. http://www.jfrog. Weise wird die Installation von Nexus source community website. com/ weiter getestet und verbessert. Inzwi- http://www.eclipse.org/ [28] Sonatype – Nexus. schen läuft der Repository-Manager in [6] IntelliJ IDEA – The Most Intelligent http://nexus.sonatype.org/ Version 1.9 sehr stabil und ist über den Java IDE. [29] . HU-eigenen Nagios-Dienst [38] in die http://www.jetbrains.com/idea http://lucene.apache.org/ Systemüberwachung eingebunden. [7] Apache Ant. http://ant.apache.org/ [30] Sonatype – Nexus Open Source. http:// [8] Sonatype – Convention Over Configu- www.sonatype.com/books/nexus- ration. http://www.sonatype.com/ book/reference/ch01s02.html Aussicht books/mvnref-book/reference/ [31] Repository Layout – Final – Ma- installation-sect-convention ven – Codehaus. http://docs. Nach den guten ersten Erfahrungen Configuration.html codehaus.org/display/MAVEN/ soll in Zukunft die Zugriffsstruktur des [9] Maven Surefire Plugin. http://maven. Repository+Layout+-+Final Repository-Managers überarbeitet wer- apache.org/plugins/maven-surefire- [32] Sonatype – Repository Management den. Wichtig hierfür sind insbesondere plugin/howto.html with Nexus. http://www.sonatype.com/ die Definition von verschiedenen Rollen [10] Maven – Available plugins. books/nexus-book/reference/ für lesende und in das Repository schrei- http://maven.apache.org/plugins/ [33] Sonatype – 1.3. Nexus Professional. bende Nutzer. Der Einsatz von Nexus index.html http://www.sonatype.com/books/ Professional ist nicht geplant. Da bisher [11] Sonatype – Universal Reuse through nexus-book/reference/ch01s03.html nur Nexus OSS als Repository-Manager Maven Plugins. http://www.sonatype. [34] Sonatype Blog – Contrasting Nexus genutzt wurde, ist eine Evaluation der com/books/mvnref-book/reference/ and Artifactory. http://www.sonatype. Funktionalität und der Verlässlichkeit installation-sect-universal-reuse.html com/people/2009/01/contrasting- von Artifactory und Archiva sinnvoll. [12] Sonatype – Chapter 4. The Build Lifecycle. nexus-and-artifactory/ http://www.sonatype.com/books/ [35] From the Frog‘s Mouth. http://blogs. mvnref-book/reference/lifecycle. jfrog.org/2009/01/contrasting-artif- html#lifecycle-sect-default actory-and-nexus.html [13] Index of /maven2/. [36] Maven Repository Manager Feature http://repo1.maven.org/maven2/ Matrix. http://docs.codehaus.org/dis- [14] Sonatype – Chapter 7. Maven Configu- play/MAVENUSER/Maven+Repository+ ration. http://www.sonatype.com/ Manager+Feature+Matrix books/mvnref-book/reference/confi- [37] PKI-Services – Computer- und Medien- guring.html service. Humboldt-Universität zu [15] Sonatype / polyglot-maven – github. Berlin, http://www.cms.hu-berlin.de/ https://github.com/sonatype/ dl/zertifizierung polyglot-maven [38] Nagios – The Industry Standard in [16] Buildr – Apache Buildr. IT Infrastructure Monitoring. http://buildr.apache.org/ http://www.nagios.org/ [17] Raven. http://raven.rubyforge.org/ [18] Gradle. http://www.gradle.org/ [19] Gant. http://gant.codehaus.org/ [20] Apache Ivy. http://ant.apache.org/ivy/ [21] . http://subversion. apache.org/ 9 SSL = Secure Sockets Layer 10 HU-IAM = Identitätsmanagement der Humboldt- [22] Git – Fast Version Control System. Universität zu Berlin http://git-scm.com/

34 cms-journal 34 / Juni 2011