Quale archetipo scegliere per un semplice progetto java


Risposte:


16

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.


l'impostazione predefinita è ora 333, non 3
TimP

4
ora è380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf

1
Dice ad esempio, non cioè, quindi implica che la selezione predefinita è 3.
Oh Chin Boon

2
Ora è 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi

Ora è 874 :)
miku

74

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.


1
Nota che questo è nel plugin Eclipse per impostazione predefinita (almeno lo è oggi).
Ben

qui creerò maven-archetype-webapp e scaricherò il catalogo maven ma ricevo un errore.
Mowgli

cosa dovrei fare?
Mowgli

19

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.archetypesgroupId. Quelli buoni per iniziare è maven-archetype-quickstarte maven-archetype-webappcome hanno detto i miei predecessori.



7

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.

4
Non vedo maven-archetype-simplenella mia selezione Eclipse, ma vedo maven-archetype-quickstart. Sono gli stessi?
huahsin68

Si prega di dare un'occhiata alla mia successiva modifica che si riferisce alla documentazione di Maven. Per quanto riguarda il plugin eclipse: personalmente preferisco modificare pom.xmlmanualmente ed eseguire la riga di comando dal prompt dei comandi.
AlexR

6

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


12
Sebbene questo consiglio possa avere valore, non risponde alla domanda. Il punto centrale degli archetipi, a quanto ho capito, è salvare lo sviluppatore da questo tipo di boilerplate e rendere facile seguire le migliori pratiche.
Michael Scheper

3

Puoi usare uno qualsiasi di quelli di base da The Practical Developer:

Librerie di test Java 8 + comunemente utilizzate:

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 + librerie di test comunemente utilizzate

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.


Capisco groupId, ma a cosa serve archetypeGroupId?
lupchiazoem

1
Viene utilizzato per individuare l'archetipo nel repository Maven, insieme al file archetypeArtifactId.
Moisés

0

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 Cataloge 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.


scaricare il catalogo sopra e impostare manualmente ma non ha funzionato per me.
Mowgli

0

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.)


0

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.

  • Un problema importante è che crea progetti che dipendono da JUnit 4. La versione corrente, JUnit 5, differisce in modo significativo, fornendo tra l'altro un'API migliorata.
  • Punti deboli minori: la sua versione predefinita è 1.0-SNAPSHOT, che dovrebbe essere 1.0.0-SNAPSHOT per seguire lo schema consigliato e usuale.
  • Un altro piccolo punto debole: crea progetti configurati per una JVM 1.7. Ciò può essere appropriato se è particolarmente necessario supportare vecchie installazioni, ma optare per una JVM ragionevolmente recente è una regola predefinita più ragionevole per i nuovi progetti. Ad esempio, Java 8 ha introdotto espressioni lambda, che probabilmente non vorresti perdere.

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-jdk8rivelato solo un candidato idoneo. Ma il suo autore mi ha scritto che "non sta davvero usando / mantenendo l'archetipo molto in questi giorni".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.