Einrichten einer Entwicklungsumgebung

Im folgenden wird beschrieben, wie man eine komplette Entwicklungsumgebung für die Entwicklung von Fakturama ab Version 2 erstellt.

  • aktuelle Version der Eclipse-Entwicklungsumgebung laden (möglichst das RCP-Package, das bringt schon einige wichtige Plugins mit). Es sollte auch die 32bit-Variante sein, da die 64bit-Variante manchmal Probleme mit verschiedenen Plugins hat (besonders im graphischen Bereich).
  • http://files.fakturama.info/dev/dropins.zip herunterladen und in den aktuellen Eclipse-Ordner entpacken (dort dürfte es bereits ein leeres dropins-Verzeichnis geben). Startet man anschließend Eclipse, sind die Plugins aus dem dropins-Ordner verfügbar.
  • Teamset-Datei in Eclipse importieren (diese ist hier zu finden)
  • Herunterladen einer aktuellen Version (2.5+) von Eclipselink (brauchen wir später für die Generierung der Metaklassen). Am besten als ZIP-Datei, da kann man es auspacken wo man will.

Target einrichten

Im Unterprojekt com.sebulli.fakturama.target die Datei com.sebulli.fakturama.target.target öffnen. Bis die ganzen Targets aufgelöst werden, dauert es meist eine Weile. Sollten im Anschluß viele rote Markierungen an den einzelnen Einträgen stehen (dies passiert manchmal auch, wenn man irgendeinen Eintrag aktualisiert) ist wie folgt vorzugehen:

Zunächst den Eintrag suchen, der nur einmal auftritt (hier z. B. org.eclipse.nebula.widgets.calendarcombo.feature.feature)

Dieser Eintrag ist als erstes zu bereinigen. Ursache ist eine aktuellere Version. Da gerade bei den Nebula-Projekten häufig Updates eingespielt werden, kann das relativ häufig passieren. Leider steht der fehlerhafte Eintrag nicht unter dem fehlerhaften Plugin 🙁 Deswegen muß man wissen, wo das Feature beinhaltet ist. Hier in diesem konkreten Fall ist das http://download.eclipse.org/technology/nebula/snapshot. Diese Site wählt man aus, drückt den Edit…-Button und wählt die Features in der neuen Version aus, die benötigt werden.

Es müssen alle Features ausgewählt werden, die vorher auch da waren. Leider sieht man das nicht. Deswegen ist es sinnvoll, vor(!) dem Speichern mit einem Editor die target-Datei zu öffnen und an die entsprechende Stelle zu springen. Das sieht dann in unserem Beispiel so aus:

<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit"><unit id="org.eclipse.nebula.widgets.calendarcombo.feature.feature.group" version="1.0.0.201410030023"/><unit id="org.eclipse.nebula.examples.feature.feature.group" version="1.0.4.201410030023"/><unit id="org.eclipse.nebula.widgets.pgroup.feature.feature.group" version="1.0.0.201410030023"/><repository location="http://download.eclipse.org/technology/nebula/snapshot"/></location>

Hier gehören also org.eclipse.nebula.widgets.calendarcombo.feature.feature.group, org.eclipse.nebula.examples.feature.feature.group und org.eclipse.nebula.widgets.pgroup.feature.feature.group zu einer Target-Site. Diese steht übrigens immer unter den Target-Einträgen. Wir wählen also die drei Einträge aus der Liste aus:

Nach dem Klick auf Finish wird die Target-Konfiguration neu analysiert. Im besten Fall hat man damit das Problem gelöst, ansonsten muß man weiter die Versionen aktualisieren (kleiner Tip für die Wartezeit: wenn bei „Resolving Target Definition“ 1% erscheint ist das Problem gelöst 🙂 – dann muß man nur noch warten…).

Wenn alle Targets aufgelöst werden konnten, sollte die Ansicht so aussehen:

Nun muß man das Target noch für die aktuelle IDE setzen:

Einrichten der Klassen-Generierung

Dieser Schritt ist nur bei der erstmaligen Einrichtung notwendig oder bei Änderungen am Datenmodell (das sollte allerdings selten bis nie auftreten).

Die Entity-Klassen werden über Texo generiert. Die Quellen dazu stehen im Plugin com.sebulli.fakturama.model. Hier gibt es im Verzeichnis model die Modell-Datei Fakturama.ecore. In dieser sind alle Klassen modelliert, die sich als Entitäten in der Datenbank wiederfinden. Zur Generierung der Klassen wählt man auf dieser Datei im Kontextmenü den Eintrag Texo – Generate JPA Annotated Model Code. Anschließend werden die Klassen neu generiert und befinden sich im Verzeichnis src-gen/main/java. Dieses Verzeichnis darf nicht in das Git-Repository eingecheckt werden!

Für den Zugriff auf die einzelnen Attribute der Entities werden sog. Metaklassen verwendet. Diese müssen auch erst generiert werden. Das geht automatisch, wenn man den Annotation-Prozessor von Eclipse anschaltet (dieser ist normalerweise aus). Folgende Schritte sind dazu notwendig:

  1. In den Projekteigenschaften des Model-Projektes die Option „Enable project specific settings“ anklicken und dann „Enable annotation processing“.

2. Auswählen der persistence.xml

3. Pfad auf src-gen/main/java stellen

4. nun müssen im „Factory Path“ noch die Generierungsklassen von EclipseLink angegeben werden:

Bei einem Project – Clean… werden nun sowohl die Entity-Klassen als auch die Metaklassen generiert.

Die JAXB-Klassen für den Webshop-Import werden direkt über Maven generiert, das geht also automatisch.

Beheben der Validierungsfehler in persistence.xml

Dazu muß die persistence_2_0.xsd in den Einstellungen eingetragen werden: