Comment créer un projet avec un modèle Maven

Comment créer un projet avec le modèle Maven

Dans ce tutoriel, nous allons vous montrer comment utilisermvn archetype:generate pour générer un projet à partir d'une liste de modèles Maven existants. Dans Maven 3.1.1, il existe plus de 1000 modèles, fou, l'équipe Maven devrait filtrer certains modèles inutiles.

Normalement, nous utilisons simplement les deux modèles suivants:

  1. maven-archetype-webapp - Projet Web Java (WAR)

  2. maven-archetype-quickstart - Projet Java (JAR)

1. Modèles Maven 1000+

Si vous tapezmvn archetype:generate, plus de 1000 modèles seront affichés à l'écran et vous n'avez aucun moyen de le voir ou de choisir ce que vous voulez. Pour le résoudre, affichez la liste des modèles dans un fichier texte comme celui-ci:

$ mvn archetype:generate > templates.txt

//waiting few seconds, then exits
Press CTRL + C

$ vim templates.txt

2. Archétype Maven: générer

Étapes pour vous guider dans la génération d'un projet Web à partir d'un modèle Spring-Hibernate existant:

2.1 List out the Maven templates :

$ mvn archetype:generate

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)

Choose archetype:

311: remote -> jboss:mobicents-ra-archetype (An archetype for slee resource adaptor.)
//...

314: remote -> ml.rugal.archetype:springmvc-spring-hibernate (A pretty useful JavaEE application archetype based on springmvc spring and hibernate)

//...
486: remote -> org.apache.maven.archetypes:maven-archetype-j2ee-simple (An archetype which contains a simplifed sample J2EE application.)
487: remote -> org.apache.maven.archetypes:maven-archetype-marmalade-mojo (-)
488: remote -> org.apache.maven.archetypes:maven-archetype-mojo (An archetype which contains a sample a sample Maven plugin.)
489: remote -> org.apache.maven.archetypes:maven-archetype-plugin (An archetype which contains a sample Maven plugin.)
491: remote -> org.apache.maven.archetypes:maven-archetype-portlet (An archetype which contains a sample JSR-268 Portlet.)
492: remote -> org.apache.maven.archetypes:maven-archetype-profiles (-)
493: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
//...

2.2 Choose number “314” for ml.rugal.archetype:springmvc-spring-hibernate templete, and fill in the detail :

Note
Ce nombre 314 peut varier en fonction de votre environnement. Trouvez votre numéro correct avec la technique indiquée à l'étape 1 ci-dessus.

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 493: 314
Choose ml.rugal.archetype:springmvc-spring-hibernate version:
1: 0.1
2: 0.2
3: 0.3
Choose a number: 3: 3
Downloading: http://repo.maven.apache.org/maven2/ml/rugal/archetype/springmvc-spring-hibernate/0.3/springmvc-spring-hibernate-0.3.jar
Downloaded: http://repo.maven.apache.org/maven2/ml/rugal/archetype/springmvc-spring-hibernate/0.3/springmvc-spring-hibernate-0.3.jar (29 KB at 19.7 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/ml/rugal/archetype/springmvc-spring-hibernate/0.3/springmvc-spring-hibernate-0.3.pom
Downloaded: http://repo.maven.apache.org/maven2/ml/rugal/archetype/springmvc-spring-hibernate/0.3/springmvc-spring-hibernate-0.3.pom (4 KB at 5.5 KB/sec)
Define value for property 'groupId': : com.example.web
Define value for property 'artifactId': : myweb
Define value for property 'version':  1.0-SNAPSHOT: :
Define value for property 'package':  com.example.web: :
Confirm properties configuration:
groupId: com.example.web
artifactId: myweb
version: 1.0-SNAPSHOT
package: com.example.web
 Y: : y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: springmvc-spring-hibernate:0.3
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.example.web
[INFO] Parameter: artifactId, Value: myweb
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.example.web
[INFO] Parameter: packageInPathFormat, Value: com/example/web
[INFO] Parameter: package, Value: com.example.web
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: groupId, Value: com.example.web
[INFO] Parameter: artifactId, Value: myweb
[INFO] project created from Archetype in dir: /Users/example/Documents/workspace/maven/template/myweb
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 35.210s
[INFO] Finished at: Tue Oct 28 15:32:10 MYT 2014
[INFO] Final Memory: 10M/29M
[INFO] ------------------------------------------------------------------------

Il générera les dossiers et fichiers de projet suivants.

maven-template

Figure: Structure du projet généré dans Eclipse IDE.

Note
Pour importer le projet dans Eclipse, saisissezmvn eclipse:eclipse et importez-le en tant que projet normal:

$ cd myweb
$ pwd
/Users/example/Documents/workspace/maven/template/myweb

$ mvn eclipse:eclipse

3. Plus d'exemples

Si vous savez quelsarchetypeArtifactId utiliser, ignorez simplement la commande en mode interactif comme ceci:

3.1 maven-archetype-quickstart (projet Java)

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

3.2 maven-archetype-webapp (Projet Web Java)

$ mvn archetype:generate -DgroupId=com.example.web -DartifactId=ProjectName
    -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false