Welcher Archetyp für ein einfaches Java-Projekt ausgewählt werden soll


86

mvn archetype: generate bietet viel zu viele Optionen und ich möchte ein einfaches Java-Dienstprogramm mit Junit-Testfällen erstellen. Ich möchte wissen, welchen Archetyp ich hier verwenden soll.


Ich empfehle Ihnen, das Maven Getting Started Guide zu lesen . Es ist kurz und deckt viel Boden ab.
Sahil Muthoo

Antworten:


16

Wenn Sie ein tun mvn archetype:generate, erscheint eine Standardauswahl geschweiften Klammern in umschließenden (), zum Beispiel (1274), wenn Sie nach oben , um zu sehen , was 1274 # ist, ist es in der Regel der Standard - Java Urbild ist mit auszuprobieren oder beginnen, wenn einfachen Projekten Java zu tun, so ist sicher zu wählen.


Dieser Standardwert ist jetzt 333, nicht 3
TimP

4
es ist jetzt380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf

1
Es heißt zB nicht, also bedeutet dies, dass die Standardauswahl 3 ist.
Oh Chin Boon

2
Es ist jetzt 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
Aliopi

Es ist jetzt 874 :)
Miku

74

Ich benutze zwei Archetypen. Dies hängt davon ab, welche Art von Anwendung Sie erstellen.

Wenn Sie eine Webanwendung möchten, verwenden Sie maven-archetype-webapp , oder wenn Sie eine einfache Anwendung möchten, verwenden Sie maven-archetype-quickstart . Sie sind nützlich, da Sie sie problemlos erweitern können.


1
Beachten Sie, dass dies standardmäßig im Eclipse-Plugin enthalten ist (zumindest heute).
Ben

hier werde ich maven-archetype-webapp erstellen und den maven katalog herunterladen, aber eine fehlermeldung erhalten.
Mowgli

was soll ich machen?
Mowgli

19

Ich benutze den folgenden Befehl:

mvn archetype:generate -Dfilter=org.apache.maven.archetypes:

Ich werde eine kurze Liste der Achetypen nur von org.apache.maven.archetypesgroupId erhalten. Die guten für den Start sind maven-archetype-quickstartund maven-archetype-webappwie meine Vorgänger sagten.



7

Ich denke du solltest verwenden maven-archetype-simple

BEARBEITEN

Laut der Maven- Dokumentation :

  • maven-archetype-quickstart Ein Archetyp, der ein Beispiel für ein Maven-Projekt enthält.
  • maven-archetype-simple Ein Archetyp, der ein einfaches Maven-Projekt enthält.

4
Ich sehe nicht maven-archetype-simplein meiner Eclipse-Auswahl, aber ich sehe maven-archetype-quickstart. Sind sie gleich?
Huahsin68

Bitte werfen Sie einen Blick auf meine spätere Bearbeitung, die sich auf die Maven-Dokumentation bezieht. In Bezug auf das Eclipse-Plugin: Ich persönlich bevorzuge es, pom.xmlmanuell zu bearbeiten und die Befehlszeile über die Eingabeaufforderung auszuführen.
AlexR

6

Ich würde mit einer sehr einfachen pom.xml-Datei beginnen, die nur das enthält, was Sie benötigen. Etwas wie

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-module</artifactId>
  <version>1</version>
</project>

von http://maven.apache.org/guides/introduction/introduction-to-the-pom.html


12
Dieser Rat mag zwar sinnvoll sein, beantwortet aber die Frage nicht. Der springende Punkt bei Archetypen ist, wie ich es verstehe, den Entwickler vor dieser Art von Boilerplate zu bewahren und es einfach zu machen, Best Practices zu befolgen.
Michael Scheper

3

Sie können alle grundlegenden von The Practical Developer verwenden:

Java 8 + häufig verwendete Testbibliotheken:

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0

Java 9 + häufig verwendete Testbibliotheken

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0 -Djava-version=9

Dazu gehören JUnit 4, Mockito und AssertJ sowie eine Standardmanifestdatei für den Fall, dass Ihre JAR-Datei ausführbar sein soll. Weitere Informationen: https://thepracticaldeveloper.com/archetypes/

Haftungsausschluss: Ich bin der Autor dieses Blogs.


Ich verstehe groupId, aber wozu archetypeGroupId?
Lupchiazoem

1
Es wird verwendet, um den Archetyp im Maven-Repository zusammen mit dem zu lokalisieren archetypeArtifactId.
Moisés

0

maven-archetype-quickstart Ein Archetyp, der ein Beispiel für ein Maven-Projekt enthält. maven-archetype-simple Ein Archetyp, der ein einfaches Maven-Projekt enthält.

Wenn Fehler behoben werden, wird dies durch Hinzufügen des Maven-Archetyp-Katalogs zu Eclipse behoben. Die folgenden Schritte sind aufgeführt:

Öffnen Sie Fenster> Einstellungen> Maven> Archetypen

Klicken Sie auf Add Remote Catalogund fügen Sie Folgendes hinzu:

Katalogdatei: http://repo1.maven.org/maven2/archetype-catalog.xml

Beschreibung: Maven-Katalog

HINWEIS: WÄHREND DER ERSTELLUNG IHRES ERSTEN MAVEN-PROJEKTS IST EINE INTERNET-VERBINDUNG ERFORDERLICH.


Den obigen Katalog herunterladen und manuell einstellen, hat aber bei mir nicht funktioniert.
Mowgli

0

Die Standard-Archetypnummer lautet jetzt 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Ein Archetyp, der ein Beispiel für ein Maven-Projekt enthält.)


0

Möglicherweise möchten Sie den Java-Archetyp in Betracht ziehen : Er verfügt über angemessene Standardeinstellungen, um ein Java-Projekt schnell nach bewährten Methoden, einschließlich JUnit-Tests, zu starten. Ich habe es als modernen Nachfolger von konzipiert maven-archetype-quickstart.

Beispiel : mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false.

Haftungsausschluss: Ich bin der Autor.

Weitere Informationen zu Alternativen finden Sie in der README-Datei dieses Projekts (sie enthält mehr Links als hier kopiert).

Der offizielle Schnellstart-Archetyp

Der offizielle Archetyp (erwähnt in Apaches Maven Getting Started Guide und im Apache Maven Cookbook) für einfache Java-Projekte ist maven-archetype-quickstart oder org.apache.maven.archetypes: maven-archetype-quickstart in vollem Umfang.

Es sollte meiner Meinung nach als veraltet angesehen werden, da es mehrere Schwächen aufweist.

  • Ein wichtiges Problem besteht darin, dass Projekte erstellt werden, die von JUnit 4 abhängen. Die aktuelle Version, JUnit 5, unterscheidet sich erheblich und bietet unter anderem eine verbesserte API.
  • Kleinere Schwachstellen: Die Standardversion ist 1.0-SNAPSHOT. Dies sollte 1.0.0-SNAPSHOT sein, um dem empfohlenen und üblichen Schema zu folgen.
  • Eine weitere kleine Schwäche: Es werden Projekte erstellt, die für eine 1.7 JVM konfiguriert sind. Dies kann angebracht sein, wenn Sie insbesondere alte Installationen unterstützen müssen. Die Entscheidung für eine relativ neue JVM ist jedoch eine vernünftigere Standardregel für neue Projekte. In Java 8 wurden beispielsweise Lambda-Ausdrücke eingeführt, die Sie wahrscheinlich nicht verpassen möchten.

Mein Archetyp bietet auch standardmäßig Protokollierung, die meiner Meinung nach nützlich ist, besser skaliert als Sysout und nicht schadet, und Guava, die meiner Meinung nach Java sinnvoll bereichert.

Andere Schnellstart-Archetypen in Maven Central

Um mich nach Möglichkeit zusammenzuschließen und unnötige Überschneidungen zu vermeiden, habe ich aktiv nach anderen Archetypen gesucht, die das gleiche Ziel wie ich haben: einen einfachen Archetyp mit angemessenen Standardeinstellungen bereitzustellen, um ein modernes Java-Projekt einfach zu starten. (Dies wurde meistens um Juni 2020 gemacht.)

Eine allgemeine Suche im Internet führte mich zu The Practical Developer. Als er kontaktiert wurde, schrieb er mir (per E-Mail), dass er nicht regelmäßig an seinem Archetyp arbeite und es daher vorziehe, die Zusammenarbeit an einem solchen Projekt abzulehnen.

Da die Suche im Internet keine anderen nützlichen Ergebnisse ergab und ich kein spezielles Suchwerkzeug fand, das für meine Anforderungen geeignet war, implementierte ich einen einfachen Archetyp-Browser. Es listet alle in Maven Central verfügbaren Archetypen auf. Es gibt viel zu viele, um sie manuell zu überprüfen. Daher habe ich diejenigen ausgewählt, deren Gruppen- und Artefakt-ID seit mindestens drei Jahren existiert und die im letzten Jahr aktualisiert wurden, in der Hoffnung, Projekte zu finden, die auf lange Sicht beibehalten werden, was vermutlich darauf hindeutet eher ein Projekt von guter Qualität. (Natürlich hat dieser Filter möglicherweise Archetypen von guter Qualität übersehen, die perfekt zum angegebenen Ziel passen. Ich kann es nicht wissen. In diesem Fall besteht dieser Archetyp diesen Filter nicht, da ich seine Artefakt-ID im Laufe der Zeit geändert habe.)

Ich habe dann die resultierende Liste manuell auf der Grundlage der Archetypbeschreibungen gefiltert, die in ihrem POM gefunden wurden, und einen weiteren Blick (normalerweise auf der offiziellen Website) auf einige vielversprechende Archetypen unter ihnen geworfen. Nur com.github.ngeor:archetype-quickstart-jdk8als geeigneter Kandidat herausgestellt. Aber sein Autor schrieb mir, dass er "den Archetyp heutzutage nicht wirklich benutzt / pflegt".

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.