| title |
|---|
Student Support Code Template (Maven Edition) |
Dies ist ein Starter-Projekt für die Übungsaufgaben in "Compilerbau" (Bachelor). Es existiert eine Maven-Konfiguration (Java-Projekt), JUnit und ANTLR sind auch bereits eingebunden. Das Projekt zeigt die Einbindung der ANTLR-Grammatiken. Zusätzlich existieren Beispielgrammatiken für die Hello-World-Beispiele.
Öffnen Sie den Ordner sample_project als neues Java-Projekt "mit existierenden Quellen" in
IntelliJ. Achten Sie dabei darauf, dass Sie als "Build
Model" entsprechend "Maven" auswählen, damit die Konfiguration übernommen wird.
Sie benötigen ein installiertes Java SE Development Kit 25 LTS. Achten Sie darauf, dass dieses auch wirklich von IntelliJ verwendet wird (zu finden unter Projekt-Einstellungen).
Weitere Software ist nicht notwendig. ANTLR und JUnit werden über das Build-Skript automatisch als Dependency heruntergeladen und eingebunden. Es empfiehlt sich dennoch, zusätzlich das ANTLR-Plugin für IntelliJ zu installieren - damit können Sie in der IDE interaktiv mit den Grammatiken experimentieren und müssen nicht immer das gesamte Programm kompilieren und laufen lassen.
Sie können natürlich auch eine beliebige andere IDE oder sogar einen einfachen Editor verwenden.
./mvnw clean
Konfigurieren Sie Ihr Programm im pom.xml in der Definition mainClass.
Danach können Sie das Programm kompilieren ./mvnw compile und starten über
./mvnw exec:java.
Wichtig: In Maven gehört das Plugin zum Ausführen des Programms nicht zum
Standard-Lebenszyklus bzw. ist nicht mit diesem verknüpft. Konfigurieren Sie sich in IntelliJ
eine neue Run-Configuration vom Typ "Maven" und tragen Sie im Feld Run den String
compile exec:java -Dexec.mainClass=Main ein (passen Sie Main entsprechend an Ihre
Main-Klasse an samt Package-Pfad).
Ihre Java-Sourcen können Sie mit ./mvnw spotless:apply formatieren.
./mvnw test (nur JUnit) oder ./mvnw verify (JUnit und Spotless)
Die ANTLR-Grammatiken werden im Ordner src/main/antlr4 erwartet. Sie
werden standardmäßig beim Bauen der Applikation übersetzt, also beispielsweise beim Ausführen
von ./mvnw compile.
Die dabei generierten Dateien werden im Build-Ordner
target/generated-sources/antlr4/ abgelegt und sind über
die Maven-Konfiguration automatisch im Classpath verfügbar.
Falls Ihre Grammatik in einem Package liegt (beispielsweise
HelloPackage.g4 im Package my.pkg), dann wird
für die generierten Sourcen im Build-Ordner automatisch dieses Package mit angelegt. Wichtig:
Bei Maven brauchen Sie hier keine Direktive @header mit der entsprechenden
Package-Deklaration in der Grammatik (also anders als bei der Gradle-Variante).
Wenn Sie die Grammatik einzeln übersetzen wollen, können Sie dies mit ./mvnw antlr4:antlr4
tun.
Tip
Hinweis: Sie werden in Ihrem eigenen Code Abhängigkeiten zu (bzw. Importe von)
generierten Klassen haben. IntelliJ wird deshalb beim Start entsprechende Fehler anzeigen -
die generierten Klassen existieren ja in einem frischen Projekt noch nicht! Diese werden
erst beim Build (./mvnw compile) bzw. beim expliziten Aufruf von ./mvnw antlr4:antlr4
erzeugt. Danach sind dann auch die Fehlermeldungen weg ... Bei einem ./mvnw clean werden
auch die generierten Sourcen mit entfernt, weshalb es danach bis zum ersten Build oder Run
wieder Fehlermeldung bzgl. der ANTLR-Dateien gibt.
Important
Hinweis: Sorgen Sie dafür, dass Ihre IDE tatsächlich auch die Projekteinstellungen von Maven übernommen hat und auch mit Maven baut!
Check, ob die Projekteinstellungen in IntelliJ passen:
- Menü
File > Project Structure > Project Settings > Projectsollte für Ihr Projekt als SDK ein "Java 25" zeigen:
- Menü
File > Project Structure > Project Settings > Librariessollte für Ihr Projekt Jar-Files für ANTLR4 zeigen:
Check, ob IntelliJ mit Maven baut:
- Menü
IDEA > Settings > Build, Execution, Deployment > Build Tools > Mavensollte auf den Maven-Wrapper umgestellt sein:
- Menü
IDEA > Settings > Build, Execution, Deployment > Build Tools > Maven > Runnersollte der Schalter "Delegate IDE build/run actions to Maven" aktiviert sein:
und unter "JRE" sollte das für das Projekt verwendete
JRE eingestellt sein, d.h. aktuell Java 25.
This work by Carsten Gips and contributors is licensed under MIT.