Gradle direkt von Eclipse debuggen

Momentan stellen wir ein Maven-basiertes Java-Projekt auf das Buildsystem Gradle um. Wichtig dabei ist, dass von Maven bekannte Komfortfunktionen weiterhin genutzt werden können: Dazu gehört auch das schnelle Starten eines lokalen Tomcats ohne vorherige manuelle Installation. Analog zum maven-tomcat-plugin gibt es für Gradle das gradle-tomcat-plugin. Sollte man (trotz hoher Testabdeckung) in die Verlegenheit kommen, einen Debugger verwenden zu müssen, gibt es zwei Möglichkeiten:

  1. Den Debugger an die JVM anhängen, die über den Aufruf von “gradle” auf der Konsole gestartet wurde.
  2. Die JVM mit Gradle direkt aus Eclipse zu starten.

Lösung 2 ist definitiv vorzuziehen, da der Debugger wesentlich performanter agiert. Aber wie starte ich Gradle in einer eigenen JVM direkt aus Eclipse ? Ganz einfach: In dem Jar gradle-launcher-1.2.jar befindet sich die Main-Klasse org.gradle.launcher.GradleMain.

Diese Klasse können wir in Form einer eigenen Launch-Konfiguration verwenden:
Main-Klasse für Eclipse Launch-Konfiguration

Die gewünschten Gradle tasks übergeben wir in den Program arguments:
Liste mit gradle tasks

Bevor wir starten, müssen wir noch zwei JARs zum Classpath hinzufügen:

  • gradle-launcher-1.2.jar
  • gradle-core-1.2.jar

Classpath-Konfiguration

Nach Klicken auf Run können wir die Ausgabe von Gradle in einer Eclipse Console betrachten, und mit dem Debugging beginnen.
Ausgabe von Gradle

Nice.

Pimp up your VIM – NERDTree

Heute bin ich auf die VIM-Erweiterung “NERDTree” gestossen. Diese Erweiterung platziert einen navigierbaren Verzeichnisbaum an die linke Seite des Editors. Zwar hat VIM einen eigenen Editor-Browser (Aufrufbar mit :E), aber mit NERDTree arbeitet es sich deutlich effizienter.

Die wichtigsten Shortcuts

  • j – Runter
  • k – Hoch
  • SHIFT-C – Wechsel in das aktuell selektierte Verzeichnis
  • u – Wechsel in das Parent-Verzeichnis.
  • m – Aktionsmenü (add, move, delete, copy)
  • ENTER – Editiern der ausgewählten Datei

Installation

Die Installation erfolgt sehr einfach über Pathogen-Bundle. Damit NERDTree automatisch gestartet wird, muss folgendes Autocommand in die ~/.vimrc eingetragen werden:

autocmd vimenter * NERDTree

Etwas unschön ist, dass beim Öffnen von vim nun immer das NERDTree-Window fokussiert ist. Um in das andere Window zu springen, muss man die Tastenkombination CTRL-W w drücken .

Dies lässt sich jedoch durch einen Eintrag in die ~/.vimrc automatisieren:

autocmd vimenter * wincmd w

Meine Terminal-Konfiguration

Hier eine kleine Liste von praktischen Konfigurationseinstellungen für die Arbeit mit dem Terminal unter Mac OS X.

1. “IR_Black”-Theme

Das wohl schönste Theme für das Mac Terminal ist “IR_Black”, zu finden unter http://blog.toddwerth.com/entries/13. Das einzige, was ich an diesem Theme noch nachträglich ändern musste, war der Cursor-Typ: Ein Blockcursor muss einfach sein.

2. Alias für ls

Folgende Optionen möchte ich bei jedem “ls” haben:

  • -G Ausgabe in Farbe
  • -F Fügt Suffixes hinter jedes ausgegebene Objekt. Bsp. ein Slash (/) für ein Verzeichnis
  • -h Gibt Dateigrössen in einer lesbareren Form zurück

Damit diese Optionen immer verwendet werden, setze ich ein alias auf ls in ~/.bash_profile.

alias ls='ls -GFh'

3. Syntax highlighting in VIM

Nächster Schritt: Ich möchte in VIM immer ein Syntax-Highlighting verwenden. Dazu lege ich die Datei ~/.vimrc mit folgenden Inhalt an:

syntax on

4. Bash completion für GIT

(Danke Johannes für diesen Tipp). Es gibt für Git ein “completion support”-Skript für Bash. So kann man kontextabhängig die zur Verfügung stehenden Git-Befehle mit Tab anzeigen lassen.

Erst lade ich das Bashskript von Github runter:

cd ~
curl -o .git-completion.bash https://raw.github.com/git/git/master/contrib/completion/git-completion.bash

Anschliessend braucht es noch folgenden zusätzlichen Eintrag in die ~/.bash_profile:

source .git-completion.bash

Fertig.

Top-7 der XCode-Shortcuts

[Novum heute: Der erste Blogeintrag zu Objective-C bzw. XCode.]
XCode ist Apple’s IDE für die Entwicklung von iPhone und Mac-Applikationen. Allerdings ist XCode bei weitem nicht so komfortabel und mächtig wie Eclipse. Dennoch gibt es ein paar Shortcuts, die jeder iPhone-Entwickler kennen sollte:

1. cmd-shift-d (Springt schnell zu einem File, ähnlich ctrl-shift-r in Eclipse )
2. cmd-alt-up (Wechselt von .h Datei zur passenden .m Datei und umgekehrt)
3. cmd-shift-j (Refactor von Klassen, Methoden und Variablen)
4. ctrl-shift-7 (Springt zum nächsten Platzhalter)
5. cmd-shift-7 (Kommentiert markierten Code)
6. ctrl-k (Löscht aktuelle Zeile)
7. cmd-shift-e (Schaltet den Editor in der Projektansicht ein und aus)

Bauen mit Ant4Eclipse

Vor kurzem habe ich für ein bereits aufgesetztes Blackberry-Projekt einen automatischen Build für Hudson konfiguriert. Wenn Maven im Einsatz ist, ist das normalerweise schnell gemacht, aber bei diesem Projekt war der Einsatz von Maven nicht möglich. Somit bleibt einem nichts anderes übrig, als selbst ein paar Ant-Skripte zu programmieren. Klar, kein Problem. Allerdings wollte ich nicht die ganzen Projektabhängigkeiten im Ant-Skript wiederholen (DRY und so…), sie wurden ja schon im Eclipse-Projekt konfiguriert.

Aber wie bekomme ich die Informationen aus der .classpath-Datei ?

Hier hilft ant4eclipse: Der “getJdtClassPath”-Task extrahiert den Classpath aus dem Eclipse-Projekt und stellt ihn für die weitere Verwendung in ant bereit. Das nachfolgende Beispiel-Skript nutzt den extrahierten Classpath und kompiliert damit die Java-Klassen:

<?xml version="1.0"?>
<project name="hudson_build" basedir="." default="build" xmlns:ant4eclipse="antlib:org.ant4eclipse">
   <property name="workspaceDirectory" value="${basedir}/.." />

   <!-- define ant4eclipse tasks -->
   <taskdef uri="antlib:org.ant4eclipse" resource="org/ant4eclipse/antlib.xml" />

   <!-- import the ant4eclipse platform macros -->
   <import file="${basedir}/hudson/ant4eclipse/macros/a4e-platform-macros.xml" />

   <!-- import the ant4eclipse jdt macros -->
   <import file="${basedir}/hudson/ant4eclipse/macros/a4e-jdt-macros.xml" />
   


   <target name="build">
      <ant4eclipse:getJdtClassPath property="classpath" pathId="classpathref" workspaceDirectory="${workspaceDirectory}" projectName="ch.javablog.myproject" />

      <!-- classes folder -->
      <delete failonerror="false">
         <fileset dir="classes" />
      </delete>

      <mkdir dir="classes" />

      <javac srcdir="src" destdir="classes" classpathref="classpathref" target="1.1" />
   </target>
</project>
</div>

Praktisch.

Praktisch: JD Java Decompiler

Wenn Bibliotheken von Drittherstellern nicht vollständig dokumentiert sind, und dann auch noch der Quelltext fehlt, kann ein Decompiler Abhilfe schaffen. Leider wurde die Entwicklung des kostenlosen Decompilers “JAD” von Pavel Kouznetsov eingestellt.

Seit letztem Jahres steht eine Alternative namens “JD” ebenfalls kostenlos zur Verfügung. Das Projekt ist zu finden unter http://java.decompiler.free.fr/ und bietet neben einer schicken Standalone GUI-Version auch ein Eclipse-Plugin an. Obwohl es noch nicht ganz fertig ist, hinterlässt das Tool einen sehr guten Eindruck.

Top 7 der Eclipse Shortcuts

In der IDE Eclipse gibt es eine Reihe Shortcuts, die das Programmieren beschleunigen. Die Liste der verfügbaren Shortcuts kann natürlich selbst auch mit einem Shortcut (CTRL+SHIFT+L) aufgerufen werden. Manche davon sind praktisch, manche nicht. Hier eine Liste meiner persönlichen Favoriten:

  • Rename / Refactoring (ALT+SHIFT+R) – Schnell eine Variable oder Methode umbenennen.
  • Open Resource (CTRL+SHIFT+R) – Zügig zu einer Datei springen.
  • Call Hierachy (CTRL+ALT+H) – Sehen, wo die aktuelle Methode aufgerufen wird.
  • Organize Imports(CTRL+SHIFT+O) – Imports aufräumen.
  • Next Editor (CTRL+F6)
  • Copy Lines (CTRL+ALT+DOWN)
  • Toggle Comment (CTRL+SHIFT+C)

Entwicklung auf einem MacBook ?

Letzten Monat habe ich mir für daheim einen Apple MacBook fürs Mp3-Verwalten, Surfen und EMail-Schreiben gekauft. Für die Java-Entwicklung bleibe ich aber bei meinem Dell. Wieso ?

  • Das JDK 6 ist bis jetzt nur in einer Developer Preview Version erhältlich
  • Das Netbeans Mobility-Pack gibts nicht für Mac OS X
  • Eclipse Europa stürzt beim “Organize Imports” gerne ab
  • Das Tastaturlayout entspricht nicht dem Schweizer Tastaturlayout, und ist fürs
    Programmieren eher hinderlich (z.B. geschweifte Klammern mit alt-8 / alt-9)

Ruby / JRuby in Netbeans 6.0

Ruby bzw. JRuby könnte demnächst auch für einige Java-Entwickler interessant werden, denn Sun erweitert ihre Netbeans IDE um eine Ruby / JRuby Unterstützung. Bereits im Vorfeld wurde dieser Schritt vermutet, da Sun die beiden JRuby-Entwickler im letzten Jahr eingestellt hatte. Mit der offiziellen Unterstützung von Sun steigt die Wahrscheinlichkeit, dass Kunden sich für eine Implementierung in Ruby bzw. JRuby entscheiden.

Einen ersten Einblick verschaffen folgende Screencasts :
http://www.netbeans.org/download/flash/jruby_on_rails/jruby_on_rails.html
http://www.netbeans.org/download/flash/jruby_editing/jruby_editing.html