Versionierung von SOA Projekten mit Subversion im JDeveloper Klaus Friemelt MT AG, Ratingen Nürnberg, 17. November 2011
MT AG MT AG MANAGING TECHNOLOGY ENABLING THE ADAPTIVE ENTERPRISE Gründung 1994 Inhabergeführte AG: Aktienkapital 1.500.000 Hauptsitz Ratingen; Niederlassungen Dortmund, Frankfurt Mitarbeiter: > 200 Festangestellte > 65 Freie Mitarbeiter Full-Service-Dienstleistung für alle Phasen des Software-Lifecycle Herstellerunabhängige Expertise in den marktführenden Technologien wie Oracle, IBM, Microsoft, SAP und OpenSource Themen- und Lösungs-Know-how in den Kerndisziplinen des Adaptive Enterprise 2
Agenda Kurzüberblick Versionskontrollsysteme Einrichtung von Versionierungs-Erweiterungen im JDeveloper Subversion im JDeveloper Projekt in Versionierung überführen SOA Projekte in Subversion F&A 3
Kurzüberblick Versionskontrollsysteme Versionskontrolle soll konsistenten Stand aller Quellcodes eines Softwaresystems sicherstellen Unterstützung konkurrierender Entwicklerzugriffe Unterstützung bei Release-Bildung Fallback auf frühere Arbeitsstände Protokollierung von Änderungen oftmals Teil eines Softwarekonfigurationsmanagements Üblicherweise Server- und Clientkomponente Ausnahme: der früher sehr verbreitete PVCS Version Manager (Client +Netzlaufwerk) je nach Artefakten Unterscheidung zwischen zwei Ansätzen: Lock-Modify-Write Copy-Modify-Merge 4
Kurzüberblick Versionskontrollsysteme Ansatz Lock-Modify-Write pessimistische Versionsverwaltung binäre Quellformate (*.fmb, *.rdf, *.jpg,...) Auschecken in lokalen Arbeitsbereich setzt Schreibsperre im Repository Andere Entwickler können keine Objektversion einchecken Vertreter: PVCS Version Manager, Serena Dimensions,... 5
Kurzüberblick Versionskontrollsysteme Ansatz Copy-Modify-Merge : optimistische Versionsverwaltung textbasierte Quellformate (*.java, *.c,... ) Änderungen als Delta archiviert parallele Bearbeitung des gleichen Objektes durch mehrere Entwickler automatisches Zusammenführen ( merge ) manuelles Auflösen von Konflikten Vertreter: CVS, Subversion,... 6
Kurzüberblick Versionskontrollsysteme Ansatzübergreifende Merkmale: parallele Entwicklungszweige ( Branches ) sind möglich Markierung von Quellen ( Tags / Label ) Rechtemanagement Mischformen sind üblich - Subversion unterstützt auch Locks 7
Einrichtung von Versionierungs-Erweiterungen aktive Versionierungs-Erweiterungen unter Menüpunkt Versioning > Configure 8
Einrichtung von Versionierungs-Erweiterungen Subversion ist standardmäßig aktiviert zusätzlich verfügbar: CVS (veraltet) IBM ClearCase Serena Dimensions Team VCS Quelle der Grafik: www.serena.com 9
Einrichtung von Versionierungs-Erweiterungen Update-Wizard startet unter Help > Check for Updates......bekannt vom Oracle SOA Composite Editor 10
Einrichtung von Versionierungs-Erweiterungen 11
Einrichtung von Versionierungs-Erweiterungen nach Abschluss der Update- Wizards und Neustart des JDevelopers steht Erweiterung zur Verfügung 12
lokales Subversion-Repository im JDeveloper auch für 1-Mann-Projekt durchaus sinnvoll komfortablere Alternative zum manuellen Wegkopieren des Applikationsordners unter Versioning > Subversion > Create Local Repository 13
lokales Subversion-Repository im JDeveloper Dateistruktur im angegebenen lokalen Repository Path 14
Zugriff auf zentrales SVN-Repository SVN-Connection einrichten über File > New... 15
Zugriff auf zentrales SVN-Repository Beispiel SVN Zugriff via https vorgeschalteter Apache z.b. aus Buildix-Paket Vorteile: Benutzerverwaltung Browserzugriff 16
Zugriff auf zentrales SVN-Repository Beispiel SVN Zugriff via svn+ssh für wenige Betriebssystembenutzer Vorteil: in Linux-Distribution 17
Projekt in Versionierung überführen Assistent-Start via Versioning > Version Application 18
Projekt in Versionierung überführen Sparsam Filtern... 19
Projekt in Versionierung überführen Defaults belassen: Rekursiv mit Checkout 20
Ansicht versionierte Applikation modifizierte Icons Anzeige der SVN-Verbindung Nach Import aus Arbeitsbereich löschen: <app>.svn-import-backup <app>.svn-import-workarea 21
SOA-Projekte - Struktur SOA - Applikation idealerweise in kleine, überschaubare SOA Composite Projekte aufteilen Zentrale Quelle eines SOA Composites: composite.xml je nach involvierter Komponente (Human Task, BPEL, Mediator, Rules, Webservices) zusätzliche abhängige Artefakte sprechende Extensionen (*.bpel, *.mplan, *.wsdl,...) - alles XML-Dateien Human Task-Komponente Magic Button generiert Eingabedialoge als separates ADF Projekt erzeugt projektübergreifende Abhängigkeiten 22
SOA-Projekte in Subversion trotz (ASCII-basierter) XML-Quellen ist wegen der komplexen Abhängigkeiten copy-modify-merge keine Option (ausser 1-Mann- Teams) Lock-modify-write verwenden Subversion kann nur explizit Locks pro Objekt setzten rekursives Locking für SVN ist ein Client-Feature... TortoiseSVN Eclipse SVN-Plugin Helios (SVNKit 1.3.5) JDeveloper SVN-Plugin ( SVNKit/1.3.0 with JNA disabled ) alle abhängigen Artefakte einzeln sperren - unpraktikabel... 23
Rekursives Locking - Serverseitig selber machen...? SVN-Hooks als Ereignistrigger Sammlung von Shell-Skript-Templates Anpassen - Umbenennen (.bat für Windows) - Berechtigungen setzten (Linux) Beispielsammlungen unter: http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ post-lock zum Locken untergeordneter Objekte Alternative: organisatorische Anweisung jeder Entwickler im Team prüft und respektiert Lock auf Ebene der Projekt-Datei (*.jwr) 24
Zusammenfassung/Ausblick JDeveloper ist für zahlreiche Versionskontrollsysteme konfigurierbar für SOA Composites wäre rekursives Locking unbedingt sinnvoll aktuelles JDeveloper SVN-Plugin leider nur eingeschränkte Locking- Unterstützung Ausweichen auf Serena Dimensions - Budgetfrage... zukünftig OEPE? Oracle Enterprise Pack for Eclipse (Helios/Indigo) OSB, ADF SOA...? 25
F&A Noch Fragen? 26
Danke für Ihre Aufmerksamkeit! MT AG managing technology I Balcke-Dürr-Allee 9 I 40882 Ratingen Tel. +49 (0) 2102 309 61-0 I info@mt-ag.com I www.mt-ag.com