Hier erkläre ich was Eclipse für die Drupal Entwicklung bietet, wie man es installiert und optimiert.
Was bietet Eclipse für die Drupal Entwicklung?
Für die Drupal Entwicklung hat Eclipse einiges zu bieten. Hier sind nur die wichtigsten Features für die Entwicklung zusammengefasst:
Drupal coding standards über PTI
- dass Drupal Dateien als PHP Dateien erkannt werden
- Spaces anstelle von TABs verwenden
- Unix Linebreaks
UTF8 Encoding
- Eclipse / PDT ist Opensource, wie Drupal - also keine Lizenzgebühren
- Eclipse / PDT gibt es für Linux, Windows und MacOSX
- Coding Templates für Drupal Hooks
- Debuging Unterstützung
… und so vieles mehr, worüber man ganze Bücher schreiben könnte.
Eclipse installieren
Windows 32bit
- Für Windows gibt es Eclipse mit PDT hier zum Download: http://www.eclipse.org/pdt/downloads/ Hier die aktuelle Version mit Windows 32-bit herunterladen.
- Danach Eclipse auspacken und in ein Verzeichnis Deiner Wahl verschieben (normalerweise c:/Programme/eclipse)
- Verknüpfung auf den Desktop von der Datei c:/Programme/eclipse/eclipse.exe, worüber dann Eclipse gestartet wird.
Windows 64bit
Für Windows gibt es die einfache Lösung, nämlich die 32bin Version zu installieren (siehe oben), oder die etwas aufwändigere Installation der 64bit Variante.
Für die 64bit Version sind folgende Schritte notwendig:
1. Java JDK von Oracle herunterladen und installieren
- http://www.oracle.com/technetwork/java/javase/downloads/index.html
- Java JDK auswählen
dann bei Plattform Windows x64 auswählen und die restlichen Optionen für den Download angeben (bei Erstellung dieses Artikels war der Dateiname jdk-6u23-windows-x64.exe)
- nachdem die Datei heruntergeladen ist, diese Installieren
2. Eclipse herunterladen und installieren
- http://download.eclipse.org/eclipse/downloads/
- Danach Eclipse auspacken und in ein Verzeichnis Deiner Wahl verschieben (normalerweise c:/Programme/eclipse)
- Verknüpfung auf den Desktop von der Datei c:/Programme/eclipse/eclipse.exe, worüber dann Eclipse gestartet wird.
3. PHP Development Tools (PDT) installieren
- Eclipse starten
- Über das Menü “Help”/”Install New Software” gehen
- Dann in der Dropdown Box bei “Work with” folgenden Eintrag auswählen: “Helios - http://download.eclipse.org/releases/helios”
- Unter ‘Programming Languages’ das Häkchen bei “PHP Development Tools (PDT) SDK Feature” setzen und auf “Next” klicken. Danach nochmal auf “Next” und noch die Lizenz annehmen und die Installation wird gestartet. Nach der Installation von PDT muss Eclipse neu gestartet werden (sicherheitshalber).
MacOSX
Für MacOSX (Leopard und Snow Leopard) gibt es Eclipse mit PDT hier zum Download: http://www.eclipse.org/pdt/downloads/ Hier die aktuelle Version mit Mac OSX Cocoa 64-bit herunterladen.
Nun die tar.gz Datei extrahieren und das Verzeichnis eclipse in das Verzeichnis Applications im Home-Verzeichnis verschieben (bei mir heißt das Verzeichnis /Users/alex/Applications - mein Loginname ist hierbei alex)
Zum Schluss wechselt man im Finder in das Verzeichnis ~/Applications/eclipse und zieht sich die Datei ‘eclipse’ auf die Docking-Leiste. Über dieses Icon wird dann Eclipse gestartet.
Linux
Für Linux gibt es zwei Möglichkeiten:
- man installiert Eclipse über die Distribution und installiert dann PDT über Eclipse nach
- man holt sich das Komplettpaket zu PDT (also distributionsunabhänig)
Ich werde hier auf die 2. Möglichkeit eingehen, da diese viele Plugins schon vorinstalliert hat (PHP Unterstützung, MyLyn, WDT, …) und daher schneller einsatzbereit ist.
Auf folgender Seite entweder die 32bit (Linux x86/GTK 2 32-bit) oder 64bit (Linux x86/GTK 2 64-bit) Variante herunterladen (wenn man eine 32bit Distribution verwendet, auch hier die 32bit Variante verwenden; das gleiche gilt für 64bit - ist die Distribution 64bit, dann auch PDT in 64bit verwenden)
http://www.eclipse.org/pdt/downloads/
Nun die heruntergeladene tar.gz Datei auspacken mit folgenden Befehl:
cd /opt
tar xfz /pfad/zu/meiner/heruntergeladenen/datei.tar.gz
Danach legt man sich noch eine Verknüpfung auf den Desktop für einen komfortablen Start von Eclipse an. Hierbei muss die Verknüpfung das Kommando /opt/eclipse/eclipse verwenden.
Eclipse Performance/Speicher Optimierung
Besonders bei großen Projekten, oder wenn man viele Projekte parallel offen hat, wird der Speicher sehr schnell knapp. Hat man genügend Hauptspeicher im Rechner verfügbar, sollte man Eclipse generell mehr Speicher einräumen. Dies macht man, indem man den Wert Xmx in der eclipse.ini auf folgenden Wert anpasst. Dieser legt die maximale Größe des zu verwendenden Speichers fest.
Man ändert dazu die Zeile:
-Xmx256m
in
-Xmx768m
um anstelle von 256MB jetzt 768MB zu erlauben. Sofern mehr Speicher verfügbar gemacht werden kann, kann hier auch eine höherer Wert verwendet werden.
Verwendet man Java 1.6 (was mittlerweile in den meisten Fällen zutreffen sollte), dann folgende Zeile:
-Dosgi.requiredJavaVersion=1.5
mit
-Dosgi.requiredJavaVersion=1.6
ersetzen.
Eclipse anschließend neu starten, damit die Änderungen aus der eclipse.ini aktiviert werden.
Wo finde ich die eclipse.ini
Windows: Im Verzeichnis c:/Programme/eclipse (sofern die Installationsanleitung weiter oben verwendet wurde)
MacOSX: Hierzu geht man mit dem Finder in das Eclipse Verzeichnis (sofern die Installationsanleitung weiter oben verwendet wurde, ist dies das Verzeichnis ~/Applications/eclipse). Darin befindet sich eine Datei names ‘eclipse’, zu der man das Kontextmenü anzeigen lässt. Darin befindet sich ein Menüpunkt “Show Package Contents”, den man anklickt (ich habe hier die englische Version in Verwendung, in Deutsch sollte das “Paketinhalt anzeigen” heißen). Es öffnet sich ein weiteres Finder Fenster, mit dem man ins Verzeichnis “Contents”/”MacOS” wechselt. Darin befindet sich die gesuchte eclipse.ini, die man mit einem Editor seiner Wahl bearbeiten kann.
Linux: Im Verzeichnis /opt/eclipse (sofern die Installationsanleitung weiter oben verwendet wurde)
Erweiterungen installieren
Teamfähig mit CVS, Subversion und Git
Mit der Eclipse Installation ist nur CVS ohne zusätzliche Plugins verfügbar.
Um SVN Unterstützung zu installieren, geht man im Menü auf Help/Install New Software und wählt bei ‘Work with’ “All Available Sites” aus. Wo “Type filter text” steht, gibt man nun ‘svn’ ein. Jetzt ein Häkchen bei “Subversive SVN Team Provider (Incubation) anklicken und die Installation starten.
Um GIT Unterstützung zu installieren, geht man im Menü auf Help/Install New Software und wählt bei ‘Work with’ “All Available Sites” aus. Wo “Type filter text” steht, gibt man nun ‘egit’ ein. Jetzt ein Häkchen bei “Eclipse EGit (Incubation) anklicken und die Installation starten.
SQL Explorer
Mit dem Eclipse SQL Explorer kann man schnell einen Blick in die Datenbank werfen, ohne Eclipse verlassen zu müssen
Um den SQL Explorer zu installieren geht man auf dem Menüpunkt Help » Install New Software und klickt auf “Add”, um folgende Daten einzugeben:
Name: SQL Explorer
Location: http://eclipsesql.sourceforge.net/
Danach das Häkchen bei SQL Explorer anmachen und die Installation mit ‘Next’ starten.
Um zu einer MySQL Datenbank Verbindung aufzubauen, ist noch der JDBC Treiber notwendig.
Bei der Konfiguration des MySQL Treibers werden dann die Daten zur Datenbank angegeben:
name: MySQL - DrupalDB
Driver: MySQL Connector
URL: jdbc:mysql://localhost/drupaldb
Hier die Ansicht mit einer Verbindung zu einer Drupal Datenbank:
AnyEdit Tools
Mit AnyEdit Tools werden bestehende TABs in Leerzeichen umgewandelt (und noch so einiges mehr).
Um den AnyEdit Tools zu installieren geht man auf dem Menüpunkt Help » Install New Software und klickt auf “Add”, um folgende Daten einzugeben:
Name: AnyEdit Tools
Location: http://andrei.gmxhome.de/eclipse/
Danach das Häkchen bei AnyEditTools aktivieren (alles andere, wird für die TAB Konvertierung nicht benötigt) und die Installation mit ‘Next’ starten.
In den Einstellungen geht man zu General -> Editors -> AnyEditTools. Auf der ersten Seite “Auto-Convert” setzt man das Häkchen “Convert tabs <-> spaces”
Auf der zweiten Seite “Convert” setzt man das Häkchen “Replace all tabs (not only leading) while “convert tabs to spaces” action.
Logviewer
Mit dem Logviewer Plugin kann man Logdateien in Eclipse anzeigen, besonders für das PHP Error Log sehr gut geeignet.
Um den Logviewer zu installieren geht man auf dem Menüpunkt Help » Install New Software und klickt auf “Add”. Hier folgende Daten eintragen:
Name: Logviewer
Location: http://svn.codespot.com/a/eclipselabs.org/logviewer/trunk/de.anbos.eclipse.logviewer.update/
Danach das Häkchen bei Logviewer anmachen und die Installation mit ‘Next’ starten.
PHP Tool Integration (PTI)
PHP Tool Integration, oder kurz PTI, macht es möglich, dass PHPUnit, pDepend, PHP Copy/Past Detector und PHP_CodeSniffer nun über Eclipse verwendet werden können. Natürlich ersetzt PTI keine Continuous Integration Umgebung, allerdings kann damit ein Entwickler vor seinen Commit den Code komfortabel überprüfen.
Kurzinfos zum Funktionsumfang:
- Mit PHPUnit kann man Unit-Tests schreiben
- Mit pDepend_ kann man Metriken auf den Quellcode anwenden, um damit die Qualität des Codes zu überprüfen
- PHP Copy/Post Dectector sucht kann gleichen Quellcode innerhalb eines Projektes
- PHP Codesniffer überprüft den Quellcode auf Coding Standards
Um den PHP Tool Integration zu installieren geht man auf dem Menüpunkt Help » Install New Software und klickt auf “Add”, um folgende Daten einzugeben:
Name: PHP Tool Integration
Location: http://www.phpsrc.org/eclipse/pti/
Danach das Häkchen bei PHP Tool Integration anmachen und die Installation mit ‘Next’ starten.
Damit die Coding Standards von Drupal überprüft werden können, muss ein entsprechend vorbereiteter CodeSniffer eingebunden werden. Dieser kann auf Drupal.org heruntergeladen werden (dazu kann man mehr im Forum lesen: Drupal Coding Standard Validation). Wer das Coder Modul gut findet, der wird als Eclipse User PDT lieben ;)
Hinweis
Damit PTI funktioniert, muss der Besitzer der php.ini der Systemumgebung Schreibrechte besitzen. Dies überprüft man am besten mit:
ls -l /etc/php.ini
Ausgabe:
-rw-r--r-- 1 root wheel 69264 Dec 30 07:29 /etc/php.ini
Wichtig ist hier das kleine w als drittes Zeichen.
Hintergrund zur php.ini Berechtigung (für Interessierte)
Mich hat es mehrere Stunden gekostet herauszufinden, wieso PTI auf einen Rechner funktioniert wie erwartet und bei einem anderen Rechner überhaupt keine Validierung durchgeführt wurde (wie es den Anschein hatte). Um das Problem aufzuspüren habe ich Eclipse mit dem Parameter -consolelog gestartet, was dann folgende Meldung zum Vorschein brachte, als ich den CodeSniffer aus Eclipse startete:
!ENTRY org.phpsrc.eclipse.pti.core 4 4 2010-12-30 08:02:31.075
!MESSAGE /var/folders/dw/dwrAWT08ERG1Ec0UNk-33++++TI/-Tmp-/zend_debug/session1020117003581053661.tmp/php.ini (Permission denied)
!STACK 0
java.io.FileNotFoundException: /var/folders/dw/dwrAWT08ERG1Ec0UNk-33++++TI/-Tmp-/zend_debug/session1020117003581053661.tmp/php.ini (Permission denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at java.io.FileWriter.<init>(FileWriter.java:73)
at org.phpsrc.eclipse.pti.core.php.inifile.INIFileModifier.flush(INIFileModifier.java:423)
at org.phpsrc.eclipse.pti.core.php.inifile.INIFileModifier.close(INIFileModifier.java:382)
at org.phpsrc.eclipse.pti.core.launching.PHPToolLauncher.createCustomPHPINIFile(PHPToolLauncher.java:344)
at org.phpsrc.eclipse.pti.core.launching.PHPToolLauncher.findLaunchConfiguration(PHPToolLauncher.java:259)
at org.phpsrc.eclipse.pti.core.launching.PHPToolLauncher.launch(PHPToolLauncher.java:135)
at org.phpsrc.eclipse.pti.core.launching.PHPToolLauncher.launch(PHPToolLauncher.java:112)
at org.phpsrc.eclipse.pti.tools.codesniffer.core.PHPCodeSniffer.launchFile(PHPCodeSniffer.java:137)
at org.phpsrc.eclipse.pti.tools.codesniffer.core.PHPCodeSniffer.parse(PHPCodeSniffer.java:84)
at org.phpsrc.eclipse.pti.tools.codesniffer.validator.PHPCodeSnifferValidator.validateFile(PHPCodeSnifferValidator.java:90)
at org.phpsrc.eclipse.pti.tools.codesniffer.validator.PHPCodeSnifferValidator.validate(PHPCodeSnifferValidator.java:75)
at org.phpsrc.eclipse.pti.tools.codesniffer.core.jobs.ValidationJob.validateFile(ValidationJob.java:102)
at org.phpsrc.eclipse.pti.tools.codesniffer.core.jobs.ValidationJob.run(ValidationJob.java:71)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Hier wurde eine Kopie der php.ini in ein temporäres Verzeichnis erstellt und in dieser Kopie sollte der include_path angepasst werden, damit PTI funktioniert. Beim Kopiervorgang werden allerdings die Rechte der Originaldatei übernommen, also auch nur Lesezugriff für den Besitzer (auch wenn sich der Besitzer ändert). Das hat zur Folge, dass PTI die temporäre php.ini nicht verändern konnte.
Abhilfe schaffte ein
sudo chmod 644 /etc/php.ini
Danach wurde noch Eclipse neu gestartet und das Problem war beseitigt :)
Performance Hinweis
Da die Validierung recht ressourcenhungrig ist, sollte man bei Performance Problemen eine automatische Ausführung der Validierung abschalten. Anstelle von einer globalen Aktivierung sollte man auch eine projektbezogene Aktivierung vorziehen, um Ressourcen zu sparen.
Eclipse PDT Drupal Konfiguration
Inhaltstypen Konfigurieren
Damit die Dateien mit den speziellen Drupal Dateierweiterungen auch als PHP Dateien erkannt werden, müssen folgende Einträge gesetzt werden. Dazu geht man in den Einstellung unter General -> Content Types und klickt dann auf PHP Content Type. Hier ergänzt man die Endungen:
- *.engine
- *.theme
- *.install
- *.module
- *.profile
- *.test
Das Eclipse Plugin Drupal for Eclipse PDT macht dies automatisch, aktuell ist das aber das einzige Feature, was dieses Plugin anbietet.
Dazu wählt man den Menüpunkt Help » Install New Software und klickt auf ‘Add’. Hier gibt man dann folgende Daten an:
Name: XTND.US
Location: http://xtnd.us/downloads/eclipse
Danach muss noch das Häkchen bei ‘Drupal for Eclipse’ angeklickt werden. Mit Hilfe des Button ‘Next’ wird die Installation durchgeführt.
Encoding und Zeilenumbrüche
- Text Encoding wird auf UTF-8 gestellt (Preferences->General->Workspace)
- Zeilenumbrüche auf Unix (Preferences->General->Workspace)
Umgang mit Whitespaces
Es werden keine TABs verwendet. Für einen TAB werden stattdessen 2 Leerzeichen gesetzt. Weiterhin wird Whitespace jeglicher Art am Zeilenende entfernt.
Um diese Eigenschaften auf alle Bereiche in Eclipse zu übertragen, sind einige Anpassungen durchzuführen:
- Leerzeichen anstelle von Tabulatoren verwenden: (Preferences->General->Editors->Text Editors). Hier muss Insert Spaces for tabs aktiviert werden.
- Leerzeichen anstelle von Tabulatoren in PHP Dateien verwenden: (Preferences->PHP->Code Style->Formatter). Hier wird Intention size” auf 2 gestellt und _Tab policy auf Spaces
- Whitespaces am Zeilenende beim Abspeichern einer Datei entfernen: (Preferences->PHP->Editor->Save Actions). Hier Remove trailing whilespace aktivieren mit All lines.
- Leerzeichen anstelle von Tabulatoren in CSS Dateien verwenden: (Preferences->Web->CSS Files->Editor). Hier wird Intention size” auf 2 gestellt und _Indent using spaces aktiviert werden
- Leerzeichen anstelle von Tabulatoren in HTML Dateien verwenden: (Preferences->Web->HTML Files->Editor). Hier wird Intention size” auf 2 gestellt und _Indent using spaces aktiviert werden
- Leerzeichen anstelle von Tabulatoren in Javascript Dateien verwenden: (Preferences->Javascript->Code Style->Formatter). Hier muss einen neues Profil basierend auf dem Eclipse [build-in] Profil angelegt werden, z.B. mit dem Namen Drupal. Danach öffnet sich ein Fenster, hier wechselt man auf Indention und macht folgende Einstellungen: Tab policy: Spaces only, Indention size=2 und Tab size=2.
- Bestehende TABs in Leerzeichen (Spaces) umwandeln (Preferences->General->Editors->AnyEditTools
- Auto Convert - hier wird Convert tabs <-> spaces aktiviert
- Convert - hier wird Replace all tabs (not only leading) while “Convert tabs to spaces” action
Debugging
Hinsichtlich Debugging finden man unter folgenden URLs mehr Informationen:
- xdebug
- Debugging PHP applications with xdebug
- Setting up a local Drupal multisite in a Vista/Eclipse PDT environment
- Drush Befehle aus Eclipse
Drupal Hook Templates
Es gibt für Eclipse auch Templates, welche die Drupal Hooks bereit stellen. Die Templates werden über das Drupal Projekt Eclipse gepflegt. Hinweis: Wenn man PTI einsetzen will, müssen die Einträge manuell gemacht werden, da PTI die Einträge aus dem Drupal Plugin nicht verwendet.
Das Projekt beinhaltet die Datei Drupal.xml, welche über Preferences -> PHP/Editor/Templates importiert wird.
Aktuell liegen die Templates nur für Drupal6 vor.
Tipps und Tricks
Über Help->Update werden alle Erweiterungen in Eclipse aktualisiert.
Um Eclipse mit einer angenehmen Arbeitsgeschwindigkeit benutzen zu können, sollte man immer alle Projekte schliessen, an denen man nicht arbeitet.
Nach dem Starten das Häkchen für Standard-Workspace setzen, damit man nicht bei jedem Start danach gefragt wird: