archetipo mvn: generate fornisce troppe opzioni e sto cercando di creare una semplice utility java con casi di test junit. Vorrei sapere quale archetipo dovrei usare qui?
Risposte:
Quando si esegue un mvn archetype:generate
, viene visualizzata una selezione predefinita racchiusa tra parentesi graffe ()
, ad esempio (1274)
, se si scorre verso l'alto per vedere cos'è # 1274, di solito è l'archetipo Java predefinito da provare o con cui iniziare, se si eseguono semplici progetti Java, così è sicuro da selezionare.
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
Uso due archetipi. Dipende dal tipo di applicazione che creerai.
Se vuoi un'applicazione web, usa maven-archetype-webapp , o se vuoi un'applicazione semplice usa maven-archetype-quickstart . Sono utili perché potrai ampliarli senza problemi.
Sto usando il comando come di seguito:
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
Otterrò un breve elenco di achetypes solo da org.apache.maven.archetypes
groupId. Quelli buoni per iniziare è maven-archetype-quickstart
e maven-archetype-webapp
come hanno detto i miei predecessori.
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Riferimento: Build Run Java Maven Project Command Line
Penso che dovresti usare maven-archetype-simple
MODIFICARE
Secondo la documentazione di Maven :
maven-archetype-quickstart
Un archetipo che contiene un progetto Maven di esempio.maven-archetype-simple
Un archetipo che racchiude un semplice progetto Maven.maven-archetype-simple
nella mia selezione Eclipse, ma vedo maven-archetype-quickstart
. Sono gli stessi?
pom.xml
manualmente ed eseguire la riga di comando dal prompt dei comandi.
Comincerei con un file pom.xml molto semplice che ha solo ciò di cui hai bisogno. Qualcosa di simile a
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-module</artifactId>
<version>1</version>
</project>
da http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
Puoi usare uno qualsiasi di quelli di base da The Practical Developer:
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
Includono JUnit 4, Mockito e AssertJ e un file manifest predefinito nel caso in cui desideri che il tuo file jar sia eseguibile. Maggiori informazioni: https://thepracticaldeveloper.com/archetypes/
Disclaimer: sono l'autore di quel blog.
groupId
, ma a cosa serve archetypeGroupId
?
archetypeArtifactId
.
maven-archetype-quickstart Un archetipo che contiene un progetto Maven di esempio. maven-archetype-simple Un archetipo che contiene un semplice progetto Maven.
se gli errori vengono risolti aggiungendo il catalogo dell'archetipo di Maven a eclipse. I passaggi sono forniti di seguito:
Apri Finestra> Preferenze> Maven> Archetypes
Fare clic
Add Remote Catalog
e aggiungere quanto segue:File di catalogo: http://repo1.maven.org/maven2/archetype-catalog.xml
Descrizione: catalogo maven
NOTA: LA CONNESSIONE A INTERNET È NECESSARIA DURANTE LA CREAZIONE DEL PRIMO PROGETTO MAVEN.
il numero di archetipo predefinito ora è 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Un archetipo che contiene un progetto Maven di esempio.)
Potresti prendere in considerazione Java Archetype : ha impostazioni predefinite ragionevoli per avviare rapidamente un progetto Java seguendo le migliori pratiche, inclusi i test JUnit. L'ho concepito come un moderno successore di maven-archetype-quickstart
.
Esempio: mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false
.
Disclaimer: io sono l'autore.
Per ulteriori informazioni sulle alternative, ecco una parte del README del progetto (fornisce più collegamenti di quelli copiati qui).
L'archetipo ufficiale di avvio rapido
L'archetipo ufficiale (menzionato da Apache's Maven Getting Started Guide e da Apache Maven Cookbook) per semplici progetti Java è maven-archetype-quickstart, o org.apache.maven.archetypes: maven-archetype-quickstart per intero.
Dovrebbe, IMHO, essere considerato deprecato, in quanto soffre di diversi punti deboli.
Il mio archetipo fornisce anche il logging di default, che penso sia utile, scala meglio di sysout e non fa male, e Guava, che penso arricchisca utilmente Java.
Altri archetipi di avvio rapido in Maven Central
Per unire gli sforzi se possibile ed evitare inutili duplicazioni, ho cercato attivamente altri archetipi che avessero lo stesso scopo del mio: fornire un semplice archetipo con impostazioni predefinite ragionevoli per avviare facilmente un moderno progetto Java. (Questo è stato fatto principalmente intorno a giugno 2020.)
Una ricerca generale su Internet mi ha portato a The Practical Developer. Quando contattato, mi ha scritto (via e-mail) che non lavora regolarmente sul suo archetipo e quindi ha preferito rifiutare di collaborare a un progetto del genere.
Poiché le ricerche in rete non hanno rivelato altri risultati utili, e non avendo trovato uno strumento di ricerca specializzato adatto alle mie esigenze, ho implementato un semplice browser per archetipo. Elenca tutti gli archetipi disponibili in Maven Central. Ce ne sono troppi da rivedere manualmente, quindi ho selezionato quelli il cui groupId e artifactId esistevano da almeno tre anni e sono stati aggiornati durante l'ultimo anno, nella speranza di trovare progetti mantenuti a lungo termine, che suppongo indichi più probabilmente un progetto di buona qualità. (Ovviamente questo filtro potrebbe aver perso archetipi di buona qualità che corrispondono perfettamente all'obiettivo dichiarato; non ho modo di saperlo. Ad esempio, questo stesso archetipo non supera quel filtro poiché ho modificato il suo artifactId nel tempo.)
Ho quindi filtrato manualmente l'elenco risultante sulla base delle descrizioni degli archetipi trovate nel loro POM e ho dato un'ulteriore occhiata (sul sito ufficiale, in genere) per alcuni archetipi promettenti tra loro. Si è com.github.ngeor:archetype-quickstart-jdk8
rivelato solo un candidato idoneo. Ma il suo autore mi ha scritto che "non sta davvero usando / mantenendo l'archetipo molto in questi giorni".