# IntelliJ Maven Projekt erstellen



## MiMa (23. Nov 2022)

Aktuell möchte ich in IJ ein Maven Projekt erstellen.
Ich habe mir etwas Literatur besorgt, muss aber zu IJ hier mal anfragen welche Projekterstellung am besten gewählt werden sollte.

1. New Projekt in dem Java, GIT und Maven ausgewählt werden kann


2. Maven Archetyp


Danke


----------



## KonradN (23. Nov 2022)

Also bei der zweiten Methode steht schon im Fenster: "To create a general Maven project, go to the New Project page,"

Wenn Du ein neues ("generelles") Maven Projekt erstellen willst, dann nutzt Du die erste Version. 

Dieses Maven Archetype ist sowas wie ein Projekt-Template. Wenn Dir also ein Archetype angegeben wurde, dann kannst Du es nutzen, um gleich ein entsprechendes Projekt mit vielen Einstellungen zu bekommen. Du aknnst es Dir ja mal ansehen - Du wirst merken, wie unübersichtlich das ist. Ich würde davon also klar abraten!

Die üblichen Wege, die ich nutze, wenn ich ein neues Projekt haben will:

a) Wenn das Framework einen Wizard bietet zur Erzeugung eines Projektes, dann nutze ich diesen sehr gerne. Beispiele wären hier Spring Boot (start.spring.io), Vaadin (start.vaadin.io), Quarkus (code.quarkus.io), ... Wobei ich hier gestehen muss, dass ich es nicht mag, dass da ein Parent Projekt so viel vorgibt. ==> Bei Spring Projekten habe ich in der Vergangenheit die Einstellungen übernommen und dann die Parent POM raus geworfen. Das ist somit auch nur für schnelle Starts eine Lösung.

b) Ansonsten greife ich auf mein "Standard Projekt" zurück und kopiere mir da einfach die POM. Das oberste Motto bei Maven ist aus meiner Sicht das, was die Prinzen vor langer Zeit schon gesungen haben: "Das ist alles nur geklaut".

c) Den Weg über New Projekt nutze ich ggf. auch hin und wieder. Aber eigentlich ist diese Lösung schon gestrichen.

Eine große Problematik, die ich sehe: Es fehlt einfach zu viel. Zu einem Software Projekt gehören gewisse Dinge, die einfach ein Muss sind:

Bei dem Weg c fehlt die Ausführung der Unit Tests! Absolutes No Go! => Da muss also immer noch mindestens das surface Plugin eingefügt werden.
Dann gibt es eine statische Codeanalyse. PMD, Spotbugs, .... Sowas muss sein. Das gehört also definitiv dazu und muss reinkopiert werden in die POM.
Die Prüfung der Abhängigkeiten kann eine CI/CD Pipeline machen. Aber ich packe sowas gerne direkt in das Projekt - das nächste Plugin. Und da hier einige Warnungen kommen, wenn Versionen nicht festgelegt wurden, hat man direkt noch: Enforcer Plugin für Maven Version und die Festlegung der Version für alle Plugins.
Dann kommen ggf. so Dinge wie GraalVM mit Native Image oder JLink/JPackage (incl. Moditect!).
 
Daher ist bei meinen Projekten eigentlich immer der Weg über eines meiner "Template" Projekte. Davon habe ich derzeit zwei:








						GitHub - kneitzel/JavaMavenApp
					

Contribute to kneitzel/JavaMavenApp development by creating an account on GitHub.




					github.com
				











						GitHub - kneitzel/JavaFXMavenApp: Simple JavaFX App with Maven
					

Simple JavaFX App with Maven. Contribute to kneitzel/JavaFXMavenApp development by creating an account on GitHub.




					github.com


----------

