Craft-Prozess
Wird der craft
Befehl aufgerufen, wird ein Prozess gestartet, der die JAR-Datei erstellen soll.
Der Craft-Prozess läuft grob wie folgt ab:
- Die Craft-Datei wird eingelesen.
-
Die Befehle in der Craft-Datei werden ausgeführt. Dabei wird der Source File-Tree aufgebaut. Dieser enthält u.a. den zu kompilierenden Java Source-Code und Resource-Dateien. (1) Möglicherweise werden zusätzliche Craft-Dateien von Dependencies eingelesen.
- Technisch existieren separate File-Trees für den zu kompilierenden Java Source-Code (
javaTree
), Resource-Dateien (resourceTree
), Java Source-Code von Dependencies (dependJavaTree
). DerjavaTree
wird zu Class-Dateien kompiliert. DerresourceTree
wird nach dem Kompilieren zu den Class-Dateien hinzugefügt. Dateien imdependJavaTree
werden beim Kompilieren zum Source-Path bzw. Class-Path hinzugefügt.
- Technisch existieren separate File-Trees für den zu kompilierenden Java Source-Code (
-
Optional werden zusätzliche
zip
Dateien in das Ausgabeverzeichnis geschrieben. - Der Java Source-Code wird kompiliert. Dazu wird
javac
aufgerufen. - Eine JAR-Datei wird im Ausgabeverzeichnis erstellt. Diese enthält die kompilierten Class-Dateien sowie die Resource-Dateien.
File-Tree
Ein File-Tree kann als eine Art Ordnerstruktur verstanden werden. Ein File-Tree besteht aus beliebig vielen anderen benannten File-Trees (Verzeichnisse) und Dateireferenzen. Es gibt nicht notwendigerweise eine Korrelation zwischen dem Dateisystem und einem File-Tree. Die Dateireferenzen können auf beliebige Dateipfade zeigen. Auf File-Trees sind einige Operationen definiert:
- Merge: Fügt ein File-Tree-Element unter einem bestimmten Pfad in einer File-Tree ein.
Dabei werden gleichnamige Verzeichnisse zusammengeführt. Existiert eine Dateireferenz bereits, wird sie durch das neue Element ersetzt.
Diese Operation wird in der Craft-Datei durch den
+
Befehl angewendet. - Remove: Entfernt ein File-Tree-Element unter einem bestimmten Pfad aus einem File-Tree.
Dabei können Dateireferenzen als auch ganze Verzeichnisse entfernt werden.
Diese Operation wird in der Craft-Datei durch den
-
Befehl angewendet.
Ausgabeverzeichnis
Alle Ausgabedateien werden in einem Ausgabeverzeichnis erstellt. Bereits vorhandene Dateien werden dabei ggf. überschrieben.
Das Ausgabeverzeichnis lässt sich in einem Craft-File durch den output-dir <path>
Befehl setzen.
Seit Version 1.2 ist es möglich mit der Option --output-dir <path>
oder -o <path>
das Ausgabeverzeichnis vom CLI aus zu setzen. Dabei wird das Ausgabeverzeichnis des Craft-Files überschrieben.
Falls kein Ausgabeverzeichnis explizit angegeben wurde, ist das Ausgabeverzeichnis output/
relativ zum Ordner, in dem sich die Craft-Datei befindet.
Dateinamen
Die Dateinamen der Ausgabedateien lassen sich nur teilweise beeinflussen. Generell haben JAR-Dateinamen das Format
projectname
entspricht dem Projektnamen des aktuellen Projektes.version
entspricht dem Versionstext, der im CLI mit der Option--ver <version>
angegeben wird (optional).standalone
wird als Text angehangen, falls die--standalone
Option verwendet wird.
ZIP-Dateinamen
Die Namen von ZIP-Dateien haben eine ähnliche Struktur:
Der Projektname wird hier durch einen individuellen ZIP-Namen ersetzt.Projektname
Der Projektname wird z.B. verwendet, um die Dateinamen der Ausgabedateien zu bestimmen.
Außerdem wird er von dem license
Befehl genutzt, um einen projektspezifischen Pfad für die Lizenz-Datei zu wählen.
Standardmäßig ist der Projektname der Name des Ordners, in dem sich die Craft-Datei befindet.
Alternativ kann in der Craft-Datei mit dem Befehl name
der Projektname angegeben werden.
Im CLI kann der Projektname des aktuellen Projektes mit der Option --project <name>
angepasst werden.