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.
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.
Antworten:
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.
380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
org.apache.maven.archetypes:maven-archetype-quickstart:1.1
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.
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.archetypes
groupId erhalten. Die guten für den Start sind maven-archetype-quickstart
und maven-archetype-webapp
wie meine Vorgänger sagten.
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Referenz: Build Führen Sie die Java Maven Project-Befehlszeile aus
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.maven-archetype-simple
in meiner Eclipse-Auswahl, aber ich sehe maven-archetype-quickstart
. Sind sie gleich?
pom.xml
manuell zu bearbeiten und die Befehlszeile über die Eingabeaufforderung auszuführen.
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
Sie können alle grundlegenden von The Practical Developer verwenden:
mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0
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.
groupId
, aber wozu archetypeGroupId
?
archetypeArtifactId
.
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 Catalog
und 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.
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.)
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.
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-jdk8
als geeigneter Kandidat herausgestellt. Aber sein Autor schrieb mir, dass er "den Archetyp heutzutage nicht wirklich benutzt / pflegt".