Zum Inhalt

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:

  1. Die Craft-Datei wird eingelesen.
  2. 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.

    1. Technisch existieren separate File-Trees für den zu kompilierenden Java Source-Code (javaTree), Resource-Dateien (resourceTree), Java Source-Code von Dependencies (dependJavaTree). Der javaTree wird zu Class-Dateien kompiliert. Der resourceTree wird nach dem Kompilieren zu den Class-Dateien hinzugefügt. Dateien im dependJavaTree werden beim Kompilieren zum Source-Path bzw. Class-Path hinzugefügt.
  3. Optional werden zusätzliche zip Dateien in das Ausgabeverzeichnis geschrieben.

  4. Der Java Source-Code wird kompiliert. Dazu wird javac aufgerufen.
  5. 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[-version][-standalone].jar

  • 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:

zipname[-version][-standalone].zip
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.