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?
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?
Réponses:
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.
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
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.
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.archetypes
groupId. Les bons pour commencer sont maven-archetype-quickstart
et maven-archetype-webapp
comme mes prédécesseurs l'ont dit.
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Référence: Build Run Java Maven Project Command Line
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.maven-archetype-simple
dans ma sélection Eclipse, mais je vois maven-archetype-quickstart
. Sont-ils les mêmes?
pom.xml
manuellement et exécuter la ligne de commande à partir de l'invite de commande.
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
Vous pouvez utiliser l'un des éléments de base de 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
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.
groupId
, mais à quoi ça sert archetypeGroupId
?
archetypeArtifactId
.
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 Catalog
et 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.
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.)
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.
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-jdk8
ré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".