Quel archétype choisir pour un projet java simple

89

mvn archetype: generate fournit beaucoup trop d'options et je cherche à créer un simple utilitaire java avec des cas de test junit. J'aimerais savoir quel archétype dois-je utiliser ici?

Jason
la source
Je vous recommande de lire le guide de démarrage Maven . C'est court et couvre beaucoup de terrain.
Sahil Muthoo

Réponses:

16

Lorsque vous effectuez un mvn archetype:generate, une sélection par défaut apparaît entre accolades (), par exemple (1274), si vous faites défiler vers le haut pour voir ce qu'est # 1274, c'est généralement l'archétype Java par défaut à essayer ou avec lequel commencer, si vous faites de simples projets Java, il en va de même sûr à sélectionner.

Oh Chin Boon
la source
cette valeur par défaut est maintenant 333, pas 3
TimP
4
il est maintenant380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf
1
Il dit par exemple, pas par exemple, donc cela implique que la sélection par défaut est 3.
Oh Chin Boon
2
Il est maintenant 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi
Il est maintenant 874 :)
miku
74

J'utilise deux archétypes. Cela dépend du type d'application que vous allez créer.

Si vous voulez une application Web, utilisez maven-archetype-webapp , ou si vous voulez une application simple, utilisez maven-archetype-quickstart . Ils sont utiles car vous pourrez les étendre sans problème.

Oleksandr
la source
1
Notez que c'est dans le plugin Eclipse par défaut (du moins c'est aujourd'hui).
Ben
ici, je vais créer maven-archetype-webapp et télécharger le catalogue maven mais obtenir une erreur.
Mowgli
que devrais-je faire?
Mowgli
19

J'utilise la commande comme ci-dessous:

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

J'obtiendrai une courte liste d'achetypes uniquement à partir de org.apache.maven.archetypesgroupId. Les bons pour commencer sont maven-archetype-quickstartet maven-archetype-webappcomme mes prédécesseurs l'ont dit.

Marioosh
la source
8

Voici ce dont vous avez besoin

 mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Référence: Build Run Java Maven Project Command Line

Trieur
la source
7

Je pense que tu devrais utiliser maven-archetype-simple

ÉDITER

Selon la documentation maven :

  • maven-archetype-quickstart Un archétype qui contient un exemple de projet Maven.
  • maven-archetype-simple Un archétype qui contient un simple projet Maven.
AlexR
la source
4
Je ne vois pas maven-archetype-simpledans ma sélection Eclipse, mais je vois maven-archetype-quickstart. Sont-ils les mêmes?
huahsin68
Veuillez jeter un œil à ma dernière modification qui fait référence à la documentation de maven. Concernant le plugin eclipse: Personnellement, je préfère éditer pom.xmlmanuellement et exécuter la ligne de commande à partir de l'invite de commande.
AlexR
6

Je commencerais par un fichier pom.xml très simple qui ne contient que ce dont vous avez besoin. Quelque chose comme

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

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

Peter Lawrey
la source
12
Bien que ces conseils aient du mérite, ils ne répondent pas à la question. Le but des archétypes, si je comprends bien, est de sauver le développeur de ce type de passe-partout et de faciliter le suivi des meilleures pratiques.
Michael Scheper
3

Vous pouvez utiliser l'un des éléments de base de The Practical Developer:

Java 8 + bibliothèques de test couramment utilisées:

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 + bibliothèques de test couramment utilisées

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

Ils incluent JUnit 4, Mockito et AssertJ, et un fichier manifeste par défaut au cas où vous voudriez que votre fichier jar soit exécutable. Plus d'infos: https://thepracticaldeveloper.com/archetypes/

Avertissement: je suis l'auteur de ce blog.

Moisés
la source
Je comprends groupId, mais à quoi ça sert archetypeGroupId?
lupchiazoem
1
Il est utilisé pour localiser l'archétype dans le référentiel Maven, avec l'extension archetypeArtifactId.
Moisés
0

maven-archetype-quickstart Un archétype qui contient un exemple de projet Maven. maven-archetype-simple Un archétype qui contient un projet Maven simple.

if get errors corrigeait le problème en ajoutant le catalogue d'archétypes maven à eclipse. Les étapes sont fournies ci-dessous:

Ouvrir la fenêtre> Préférences> Maven> Archétypes

Cliquez Add Remote Cataloget ajoutez ce qui suit:

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

Description: catalogue maven

REMARQUE: UNE CONNEXION INTERNET EST NÉCESSAIRE LORS DE LA CRÉATION DE VOTRE PREMIER PROJET MAVEN.

Biswajit Sahu
la source
télécharger le catalogue ci-dessus et définir manuellement mais n'a pas fonctionné pour moi.
Mowgli
0

le numéro d'archétype par défaut est maintenant 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Un archétype qui contient un exemple de projet Maven.)

Prateek Kushwaha
la source
0

Vous pouvez envisager l'archétype Java : il a des valeurs par défaut raisonnables pour démarrer rapidement un projet Java en suivant les meilleures pratiques, y compris les tests JUnit. Je l'ai conçu comme un successeur moderne de maven-archetype-quickstart.

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

Avertissement: je suis l'auteur.

Pour plus d'informations sur les alternatives, voici une partie du fichier README de ce projet (il fournit plus de liens que copiés ici).

L'archétype officiel du démarrage rapide

L'archétype officiel (mentionné par Apache's Maven Getting Started Guide et par le Apache Maven Cookbook) pour les projets Java simples est maven-archetype-quickstart ou org.apache.maven.archetypes: maven-archetype-quickstart dans son intégralité.

Il devrait, à mon humble avis, être considéré comme obsolète, car il souffre de plusieurs faiblesses.

  • Un problème important est qu'il crée des projets qui dépendent de JUnit 4. La version actuelle, JUnit 5, diffère considérablement, fournissant entre autres une API améliorée.
  • Faiblesses mineures: sa version par défaut est 1.0-SNAPSHOT, qui devrait être 1.0.0-SNAPSHOT pour suivre le schéma recommandé et habituel.
  • Autre petite faiblesse: il crée des projets configurés pour une JVM 1.7. Cela peut être approprié si vous avez particulièrement besoin de prendre en charge d'anciennes installations, mais opter pour une JVM raisonnablement récente est une règle par défaut plus raisonnable pour les nouveaux projets. Par exemple, Java 8 a introduit des expressions lambda, que vous ne voulez probablement pas manquer.

Mon archétype fournit également la journalisation par défaut, ce que je pense utile, évolue mieux que sysout et ne fait pas de mal, et Guava, qui, je pense, enrichit utilement Java.

Autres archétypes de démarrage rapide dans Maven Central

Afin de joindre les efforts si possible et d'éviter les duplications inutiles, j'ai activement recherché d'autres archétypes qui auraient le même objectif que le mien: fournir un archétype simple avec des valeurs par défaut raisonnables pour démarrer facilement un projet Java moderne. (Cela a été principalement fait vers juin 2020.)

Une recherche générale sur Internet m'a conduit à The Practical Developer. Contacté, il m'a écrit (par e-mail) qu'il ne travaille pas régulièrement sur son archétype et a donc préféré refuser de collaborer sur un tel projet.

Les recherches sur le net n'ayant pas révélé d'autres résultats utiles, et comme je n'ai trouvé aucun outil de recherche spécialisé adapté à mes besoins, j'ai implémenté un navigateur d'archétype simple. Il répertorie tous les archétypes disponibles dans Maven Central. Il y en a beaucoup trop à revoir manuellement, j'ai donc sélectionné ceux dont groupId et artifactId existaient depuis au moins trois ans et ont été mis à jour au cours de la dernière année, dans l'espoir de trouver des projets maintenus sur le long terme, ce que je suppose indique plus probablement un projet de bonne qualité. (Bien sûr, ce filtre a peut-être manqué des archétypes de bonne qualité qui correspondent parfaitement à l'objectif déclaré; je n'ai aucun moyen de le savoir. À titre d'exemple, cet archétype même ne passe pas ce filtre car j'ai changé son artifactId au fil du temps.)

J'ai ensuite filtré manuellement la liste résultante sur la base des descriptions d'archétypes trouvées dans leur POM, et j'ai jeté un coup d'œil (sur le site officiel, généralement) pour quelques archétypes prometteurs parmi eux. Seulement com.github.ngeor:archetype-quickstart-jdk8révélé être un candidat approprié. Mais son auteur m'a écrit qu'il "n'utilise / ne maintient pas vraiment beaucoup l'archétype ces jours-ci".

Olivier Cailloux
la source