Java Projekt strukturieren?
Hallo zusammen! Ich habe vor kurzem mit Java angefangen und mir dazu einige Projekte, z.B. auf GitHub angeguckt. Dabei ist mir aufgefallen, dass die Projekte zumeist unterteilt sind (Was ja durchaus Sinn macht). Hier ein Beispiel von dem Minecraft-Bukkit Projekt auf GitHub:
src/
main/
javadoc/
java/
org/
bukkit/
block/
Beacon.java
Biome.java
...
command/
BlockCommandSender.java
...
...
BanEntry.java
...
site/
...
test/java/org/bukkit/
...
Allerdings habe ich trotzdem noch einige Fragen:
- Warum ist der eigentliche Bukkit Ordner in bukkit/src/main/java/org/bukkit/ und nicht einfach in bukkit/src/ oder bukkit/main/src/?
- Wie würde man das Projekt importieren? Mit import java.org.bukkit;?
- Welche Struktur benutzt ihr? / Welche würdet ihr empfehlen?
2 Antworten
Das entspricht der Maven-Projektstruktur.
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
Die musst du nicht verwenden, ist aber in OSS-Projekten mehr oder weniger der de-facto-Standard, weil dort eben sehr häufig Maven verwendet wird (und selbst wenn's Gradle ist, orientiert sich das oft am Maven-Layout).
Ein anderes Thema ist die Package-Struktur da drin. Die hängt vom Projekt ab, es gibt aber sinnvolle Muster - etwa nach Schichten (z.B. Backend, Frontend) und nach funktionalen Bereichen. Hier ein Beispiel: https://blog.hello2morrow.com/2015/06/love-your-architecture/
Ein Package wird in der Regel nach der URL des Erstellers benannt.
Meine Packages heißen zum Beispiel alle
com.spacewar.beans
com.spacewar.server
com.spacewar.etc
oder
de.xearox.server
de.xearox.etc
und wenn man nun den Pfad verfolgt steht dann da:
src/main/java/com/spacewar/server/Server.java
Wie man irgendwas importiert?
Du fügst die Jar zu deinem Buildpath hinzu und kann dann auf die Funktionen der Jar zugreifen.
Und zum letzten Punkt, siehe oben, so mache ich das.