Java HelloWorld mit Maven

Version 1 von Arne Schirmacher
am 11.Sep.2009 10:39.

verglichen mit
Aktuelle Version von Arne Schirmacher
am 11.Sep.2009 10:48.

Schlüssel
Diese Zeile wurde entfernt.
Dieses Wort wurde entfernt. Dieses Wort wurde hinzugefügt.
Diese Zeile wurde hinzugefügt.

Änderungen (12)

Seitenhistorie anzeigen
h2. HelloWorld Application generieren

Ein beliebter Einstieg in eine Programmiersprache ist das "HelloWorld" Programm. Das ist das einfachstmögliche Programm, das den Text "Hello, world!" auf der Konsole ausgibt. Im allgemeinen ist es nur wenige Zeilen lang. In Basic heißt es etwa {{10 PRINT "Hello, world!"}}.

In Java ist das schon komplizierter, hier sieht es etwa so aus:
{{10 PRINT "Hello, world!"}}.

In Java ist das schon komplizierter, hier sieht es so aus:

{noformat}
Datei App.java:
{noformat}


Das war ja ziemlich einfach. Aber heutzutage schreibt man selbst ein "HelloWorld"-Programm nicht mehr selbst, sondern man lässt es sich generieren. Maven kennt dazu die Befehle {{archetype:create}} (veraltet) bzw. {{archetype:generate}}, die einem eine komplette Directorystruktur aufsetzen, mit allem, was dazugehört. Einschließlich o.a. "HelloWorld"-Programm.

Maven benötigt noch zwei zusätzliche Parameter namens {{groupId}} und {{artifactId}}. Die {{artifactId}} ist üblicherweise der Name des Programms oder Moduls, die {{groupId}} ist meistens eine übergeordnete Bezeichnung wie ein Firmen- oder Projektname. Da die {{groupId}} weltweit eindeutig sein sollte, hat sich also Konvention die Verwendung eines Domainnamens eingebürgert.

Wir wechseln also in ein geeignetes Verzeichnis und starten Maven. Es werden nun etliche MByte an Bibliotheken, Plugins und dergleichen gedownloadet. Sodann wird einem ein erschreckend umfangreiches Auswahlmenü angeboten, aber wir brauchen erstmal nur die angebotenen Defaults mit {{return}} bestätigen. Der {{archetype:create}}-Befehl generiert denselben Output, ist aber veraltet, weil es jetzt ja den komplizierteren {{archetype:generate}}-Befehl gibt, der noch viel mehr kann (dazu später mehr).
{noformat}

Nach einer gewissen Wartezeit und dem Download von etlichen MByte wird ein Directory mit allen für Maven erforderlichen Dateien angelegt. Wir können jetzt unser HelloWorld Programm automatisch testen und bauen:
Nach einer gewissen Wartezeit und dem Download von etlichen MByte wird ein Directory mit allen für Maven erforderlichen Dateien angelegt. Wir können jetzt unser HelloWorld Programm automatisch testen und bauen. Dazu wechseln wir in das neu generierte Verzeichnis und geben {{mvn package}} ein. Dieser Vorgang lädt einige weitere MByte, führt ggf. vorhandenen Test-Code aus und erzeugt ein distributable:

{noformat}
C:\dev>cd helloworld
C:\dev\helloworld>mvn package
[INFO] Scanning for projects...
{noformat}

Mit dem {{mvn package}}-Befehl wird das Programm in einer jar-Datei verpackt, wie es bei Java üblich ist.

Das Programm kann nun mit folgendem Befehl gestartet werden:
{noformat}

Es geht allerdings noch etwas einfacher, indem man in der jar-Datei die Information ablegt, welche Klasse beim Aufruf zu starten ist. Dazu werden folgende zusätzliche Informationen in der {{pom.xml}}-Datei benötigt, und zwar gleich hinter den {{<dependencies>}}-Abschnitt:

{noformat}

Jetzt kann man das HelloWorld-Programm mit {{java -jar target/helloworld-1.0-SNAPSHOT.jar}} oder auch mit Doppelklick (abhängig von der Systemkonfiguration) starten.

Falls die jar-Datei kein Manifest enthält, gibt es den folgenden Fehler:

{{Failed to load Main-Class manifest attribute from helloworld-1.0-SNAPSHOT.jar}}