Maven & JavaFX für Werner
Erstellung des Projektes
Das Beispiel-Projekt kann man auf zwei Wegen erstellen. Zum Einen zu Fuß in der Shell, zum Anderen in
NetBeans in der Oberfläche. Ich werde hier beides zeigen, weil es evtl. das Verständnis für die
Mechanismen stärkt.
Mit Maven in der Shell
Damit man in der Shell in der richtigen Umgebung arbeitet (JDK etc.) ist es eine gute Idee, auch dafür
ein Script zu erstellen. Dort legen wir das JDK fest, und sichern unseren Programmen zu, das korrekte
Java auch zu benutzen. In "etc" legen wir eine Datei "myenv.sh" an. Es bekommt einen Parameter, damit
wir zwischen JDK 8 und JDK 11 hin und her schalten können.
#!/bin/bash
export JAVA_HOME=~/Tutorial/opt/java$1
export PATH=$JAVA_HOME/bin:$PATH
In dem Terminal, in dem wir hier arbeiten, sollten wir als erstes "myenv.sh" aktivieren, und das
Ergebnis auch prüfen:
. etc/myenv.sh 11
java -version
which java
Hier fällt dann hoffentlich ein openjdk version 11 heraus, und auch der Pfad zum "java" sollte unser
Pfad in opt/java11 sein.
In der Shell benötigt man nur Maven selber. Hier wählt man mit den "archetype"-Parametern das
Grundgerüst für die "pom.xml". Ein guter Einstieg ist von "apache.org" das "quickstart". Damit hat man
ein Grundgerüst für eine einfache Bibliothek oder auch einem ausführbaren Java-Programm.
cd Entwicklung
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.4 \
-DgroupId=de.wh \
-DartifactId=javafx-shell \
-Dpackage=de.wh.javafx \
-Dversion=2022.12
cd ..
Mit diesem Kommando erstellst du einen Ordner "javafx-shell", in dem nur 2 Sachen enthalten sind. Die
sagenhafte "pom.xml" und den "src"-Ordner. Mit der "pom.xml" kann Maven eine passende jar-Datei
erstellen. Im "src" befindet sich weiter unten die "App.java" Klasse. Sie enthält das typische "Hello
World!". Natürlich kannst du dieses Projekt bereits mit NetBeans öffnen.
Der übliche Hergang bei Maven ist natürlich das "Erstellen" und "Laufenlassen". Also eigentlich so:
cd Entwicklung/javafx-shell
mvn package
java -jar target/javafx-shell-2022.12.jar
cd ../..
Leider führt uns die Ausführung noch nicht zum Ziel. Wir erhalten die Fehlermeldung:
kein Hauptmanifestattribut, in target/javafx-shell-2022.12.jar
Das ist aber gar kein Hexenwerk. In der "pom.xml" gibt es das PlugIn "maven-jar-plugin". Dort müssen wir
nur sagen, dass wir gefälligst eine MainClass setzten wollen:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<mainClass>de.wh.javafx.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Führt man nun das "Erstellen" und "Laufenlassen" erneut aus, bekommen wir das gewünschte Ergebnis
"Hello World!" in der Konsole angezeigt.
cd Entwicklung/javafx-shell
mvn package
java -jar target/javafx-shell-2022.12.jar
cd ../..
Jetzt nur noch die Einstellungen für den Java-Compiler und Java-Source in der "pom.xml" auf JDK 1.8
setzen (dort steht nämlich noch 1.7, also in der pom.xml nach maven.compiler.source suchen und Werte
anpassen), fertig:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
Zu beachten ist hier noch, dass damit nicht automatisch das JDK 1.8 verwendet wird, sondern nur,
dass das verwendete JDK sich so verhalten soll!
Mit NetBeans
Die Schritte, die wir mit der Shell gemacht haben, lassen sich auch mit NetBeans durchführen. "New
Project", "Java with Maven", "Project from archetype", "maven-archetype-quickstart", Parameter setzen
fertig. Dazu einfach nur der Bildergalerie folgen:
Nach dem klick auf "Finish", hast du das gleiche Projekt (nur der Name ist anders, statt javafx-shell
heisst es nun javafx-nb) noch einmal. Die Anpassungen für die MainClass und für die Java-Version müssen
auch hier vorgenommen werden. Danach kann man in beiden Projekten weiterarbeiten.