Sebastian Hempel bio photo

Sebastian Hempel

Software Crafter, Clean-Code-Developer, JEE Professional, Puppet-Master, OpenSource Fanboy, Alfisti

Email Twitter Google+ XING Instagram Github

Wie oft habe ich mir schon überlegt einen neuen Workspace in Eclipse anzulegen es dann aber doch gelassen. Nicht wegen des Anlegens selbst, sondern weil ich mich vor der Konfiguration des Workspace “gedrückt” habe. Auch ist es immer wieder mühsam in schon längere Zeit nicht mehr genutzten Workspaces die Einstellungen auf den aktuellen Stand der Dinge zu bringen. Mit dem Plug-In Workspace Mechanic werden mir diese Arbeiten abgenommen.

eclipse logo

Was ist Workspace Mechanic?

Workspace Mechanic ist ein Plug-In für eclipse. Es wird von Google unter der Eclipse Public License zur Verfügung gestellt. Das Plug-In dient zur automatischen Konfiguration von Eclipse. Die durchzuführenden Einstellungen werden hierzu in ein oder mehreren Tasks gespeichert. Workspace Mechanic prüft in regelmäßigen Abständen, ob die aktuelle Konfiguration Unterschiede zu der in den Tasks beschriebenen Konfiguration aufweist. Ist dies der Fall, wird der Benutzer über eine Dialogbox darauf hingewiesen. Er kann die Konfiguration durch den Task anpassen lassen oder die Differenz ignorieren.

Mit Workspace Mechanic können die folgenden Anforderungen umgesetzt werden:

  1. Durch die Tasks wird sicher gestellt, dass alle Entwickler eines Teams, einer Abteilung oder eines ganzen Unternehmens mit den gleichen, konsistenten Einstellungen arbeiten.

  2. Nach der Erstellung eines neuen Workspace kümmert sich Workspace Mechanic um die Konfiguration. Alle neuen Workspaces erhalten die gleiche Konfiguration. Es muss nicht mehr mühsam manuell ein neuer Workspace eingerichtet werden.

  3. Tasks führen Änderungen an bestehenden Workspaces durch. Neue Vorgaben werden damit schnell umgesetzt.

Was ist ein Task?

Ein Task besteht aus einem Test und ein oder mehreren Aktionen. Es gibt verschiedene Formen von Tasks: Konfigurationsdateien, Java Klassen, Groovy Skripte oder Eclipse Plug-Ins. In regelmäßigen überprüft Workspace Mechanic die Konfiguration. Hierzu werden alle definierten Tasks ausgeführt. Schlägt der Test eines Tasks fehl, wird dieser am Ende des Laufs angezeigt. Durch die Anwendung der Aktionen des Tasks können die Abweichungen in der Konfiguration behoben werden.

Ich habe mich bisher nur dem den Tasks in Form von Konfigurationsdateien (Konfigurations-Task) beschäftigt. Die anderen Formen erlauben eine noch umfangreichere Beeinflussung der Konfiguration.

Ein Konfigurations-Task ist eine Eclipse Konfigurationsdatei (Extension .epf). Die Aktionen sind die in der Konfigurationsdatei gespeicherten Einstellungen. Die Ausführung wird durch Metainformationen im Kopf der Dateien definiert.

# @title General Editor Settings
# @description Configure the global text editor.
# @task_type LASTMOD
file_export_version=3.0
/instance/org.eclipse.ui.editors/printMargin=true
/instance/org.eclipse.ui.editors/printMarginColumn=110
/instance/org.eclipse.ui.editors/spellingEnabled=false
/instance/org.eclipse.ui.editors/lineNumberRuler=false
/instance/org.eclipse.ui.editors/spacesForTabs=true

In diesem Beispiel ist im Header ein Titel (@title) und eine Beschreibung des Tasks (@description) hinterlegt. Über das Meta-Datum @task_type wird die Art des Konfiguration-Tasks festgelegt.

Beim hier angegebenen Typ LASTMOD werden die Änderungen / Einstellungen der Datei genau dann übernommen, wenn die Konfigurationsdatei geändert worden ist. Außerdem werden die Einstellungen von Workspace Mechanic übernommen, wenn der Tasks bisher noch nie angwendet worden ist. Über diesen Typ lassen sich Einstellungen bzw. Vorgaben veröffentlichen.

Weiterhin gibt es den Typ RECONCILE. Bei diesem Task wird bei jedem Test geprüft, ob die Einstellungen aus dem Tasks auch genau so in Eclipse vorhanden sind. Stimmt nur eine Einstellung nicht überein, hat der Benutzer die Möglichkeit die Einstellung korrigieren - an den Task anpassen - zu lassen.

In der eigentlichen Konfigurationsdatei sind die Einstellungen im gleichen Format wie in den normalen Eclipse-Konfigurationsdateien aufgeführt. Die Zeile file_export_version sollte immer enthalten sein. Damit wird das eigentliche Format der Konfigurationsdatei angegeben.

Wo sucht Workspace Mechanic nach Tasks?

In der Konfiguration des Plug-Ins wird angegeben, an welchen Orten nach Tasks gesucht wird. Die Dateien können hierzu z.B. in lokalen Verzeichnissen abgelegt werden.

  • ${HOME}/.eclipse/mechanic

  • /opt/eclipse/mechanic

  • /srv/shared/eclipse/mechnic

workspace settings

Durch diesen Mechanismus können vom Entwickler die Dateien selbst editiert und für Workspace Mechanic zur Verfügung gestellt werden. Verweist man auf ein über das Netzwerk geteiltes Verzeichnis, können die Tasks zentral für alle Beteiligten zur Verfügung gestellt werden.

Eine weitere Möglichkeit besteht darin, eine URL als “Verzeichnis” anzugeben. Dadurch werden die zu nutzenden Tasks auf einem normalen HTTP-Server veröffentlicht. Die URL verweist dabei nicht auf das Verzeichnis sondern auf eine Manifestdatei.

In der Manifestdatei wird auf die eigentlichen Tasks (.epf Dateien) verwiesen. Die Manifestdatei ist im JSON Format gehalten.

{
    "type": "com.google.eclipse.mechanic.UriTaskProviderModel",
    "metadata": {
        "description": "Company Workspace tasks",
        "name": "Rainer User",
        "contact": "rainer.user@company.org"
    },
    "tasks": [
        "subversive.epf",
        "show_line_number.epf"
    ]
}

Die metadatai Angaben werden nicht von Workspace Mechanic genutzt und dienen zur Dokumentation. Werden nur die Dateien angegeben, sucht das Plug-In diese im gleichen Verzeichnis wie das Manifest. Bei Bedarf können absolute Pfade (komplette URLs) angegeben werden.

Tasks durch den Preferences Recorder erstellen

Bleibt noch die Frage, wie man die in den Tasks enthaltenen Einträge erzeugt oder wo man die möglichen Werte nachschlagen kann.

context menu

Am einfachsten erfolgt dies mit dem Preference Recorder. Dieser wird über das Kontextmenü des Plug-Ins gestartet. Nach dem Start werden vom Rekorder alle Änderungen an der Konfiguration aufgezeichnet. Sind alle Einstellungen über die bekannten Dialoge vorgenommen worden, stoppt man die Aufzeichnung der Änderungen.

In einem Dialog werden alle Einstellungen mit den (geänderten) Werten aufgeführt. Im Dialog sind der Titel, die Beschreibung sowie der Speicherort der Tasks-Datei anzugeben. Einzelnen Einträge können aus der Aufzeichnung entfernt werden. Beim Beenden des Dialogs werden danach alle Einstellungen in die angegebene Task-Datei gespeichert.

Derart erstellte Tasks können gut als Vorlage verwendet werden. Zumindest können aus diesen Tasks die Namen der gewünschten Konfiguration Einstellungen entnommen werden.

Hilft Workspace Mechanic?

Die Beschäftigung mit Workspace Mechanic ist nicht nur in einem Team, einer Abteilung oder einem Unternehmen sinnvoll. Selbst ein einzelner Entwickler kann sich die Arbeit erleichtern.

So fallen für mich die vielen manuellen Konfigurationsschritte nach dem Anlegen eines neuen Workspace weg. Ich kann mir durch das Plug-In auch sicher sein, dass alle Einstellungen wie von mir gewünscht vorgenommen werden. Nachträgliche Änderungen an der "Wunschkonfiguration" werden über den gleichen Mechanismus auf bereits bestehende Workspaces angewendet.

Leider wird das Projekt von Google nicht mehr aktiv weiter entwickelt. Laut Homepage finden aber noch Bugfixes statt. Da das Projekt OpenSource ist, besteht immer noch die Möglichkeit selbst Anpassungen vorzunehmen.