Verzeichnisstruktur von Java-Projekten

Je nachdem welche Entwicklungsumgebung ich verwende, oder auf welche Art und für welchen exakten Projekttyp ich darin ein neues Java-Projekt anlege, erhalte ich teilweise sehr unterschiedliche Verzeichnisstrukturen. Das ist ähnlich wie die etwas zu “aufwändige” Unittest-Generierung in NetBeans eigentlich ziemlich ärgerlich. Vor allem Programmieranfänger, welche auf möglichst einfache Art ein neues Java-Projekt erstellen möchten, verstehen dann überhaupt nicht mehr, was nun wohin gehören soll.

Während NetBeans immerhin schon eine strikte Aufteilung zwischen produktiven Quellen (/src) und Testfällen (/test) vornimmt, und auch differenzierte Klassenpfäde konfiguriert (so dass die Klassen im /test-Verzeichnis nie zum Runtime-Classpath gehören), ist Eclipse hier noch etwas primitiver, und erstellt per Default nur ein /src-Verzeichnis (immerhin lässt sich der Default konfigurieren, was wieder ein Vorteil ist). Aber es bleibt bei einem einzigen Klassenpfad.

Wie auch immer: In der Java-Welt hat sich durch Apache Maven (ein Buildwerkzeug) eine standardisierte Verzeichnisstruktur durchgesetzt, die auch dann Sinn macht, wenn man Maven gar nicht einsetzt! Dabei wird nicht nur strikt zwischen produktivem und test-Quellcode unterschieden, sondern auch alle Ressourcen (Properties, Konfigurationsdateien, Images etc.) werden separiert, und es ist auch Platz für gänzlich andere Quellen (Scripts, HTML etc.).

Die minimale Verzeichnisstruktur für ein einfaches Java-Projekt umfasst nach dieser Struktur vier in sich symmetrische Verzeichnisse:

  • src/main/java – Produktive Java-Quellen
  • src/main/resources – Produktive Ressourcen
  • src/test/java – Java-Quellen für Testfälle (primär Unittests)
  • src/test/resources – Ressourcen nur für die Testfälle

Dieses Standardlayout wird mittlerweile von sehr vielen Werkzeugen automatisch erkannt und entsprechend unterstützt. Es ist auch eine wesentliche Grundlage für beliebige, automatisierte Buildprozesse. Und auch in der Entwicklungsumgebung sind dadurch alle Artefakte sauber gegliedert. Mit Ausnahme des kleinen, initialen Mehraufwandes beim Aufsetzen eines neuen Projektes, resultieren daraus somit nur Vorteile! Und wenn alle Projekte die gleiche Struktur verwenden, kann man sich auch sehr viel schneller orientieren.

Wer mehr Informationen zur Verzeichnisstruktur sucht, findet diese beispielsweise in der Dokumentation von Apache Maven unter: http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

Leave a Reply

Your email address will not be published. Required fields are marked *