Maven - Modelli di progetto

Maven fornisce agli utenti un elenco molto ampio di diversi tipi di modelli di progetto (614 in numeri) utilizzando il concetto di Archetype. Maven aiuta gli utenti ad avviare rapidamente un nuovo progetto java utilizzando il seguente comando.

mvn archetype:generate

Cos'è Archetype?

Archetype è un plugin Maven il cui compito è creare una struttura di progetto secondo il suo modello. Utilizzeremo il plug-in archetipo di avvio rapido per creare una semplice applicazione java qui.

Utilizzo del modello di progetto

Apriamo la console dei comandi, vai al file C:\ > MVN directory ed eseguire quanto segue mvn comando.

C:\MVN>mvn archetype:generate

Maven inizierà l'elaborazione e chiederà di scegliere l'archetipo richiesto.

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] -------------------------------------------------------------------
[INFO] Preparing archetype:generate
...

600: remote −> org.trailsframework:trails-archetype (-)
601: remote −> org.trailsframework:trails-secure-archetype (-)
602: remote −> org.tynamo:tynamo-archetype (-)
603: remote −> org.wicketstuff.scala:wicket-scala-archetype (-)
604: remote −> org.wicketstuff.scala:wicketstuff-scala-archetype

Basic setup for a project that combines Scala and Wicket,
depending on the Wicket-Scala project.
Includes an example Specs test.)

605: remote −> org.wikbook:wikbook.archetype (-)
606: remote −> org.xaloon.archetype:xaloon-archetype-wicket-jpa-glassfish (-)
607: remote −> org.xaloon.archetype:xaloon-archetype-wicket-jpa-spring (-)
608: remote −> org.xwiki.commons:xwiki-commons-component-archetype
   (Make it easy to create a maven project for creating XWiki Components.)
609: remote −> org.xwiki.rendering:xwiki-rendering-archetype-macro
   (Make it easy to create a maven project for creating XWiki Rendering Macros.)
610: remote −> org.zkoss:zk-archetype-component (The ZK Component archetype)
611: remote −> org.zkoss:zk-archetype-webapp (The ZK wepapp archetype)
612: remote −> ru.circumflex:circumflex-archetype (-)
613: remote −> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-)
614: remote −> sk.seges.sesam:sesam-annotation-archetype (-)
Choose a number or apply filter
(format: [groupId:]artifactId, case sensitive contains): 203:

Premi Invio per scegliere l'opzione predefinita (203: maven-archetype-quickstart)

Maven chiederà una versione particolare di archetipo.

Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:

Premi Invio per scegliere l'opzione predefinita (6: maven-archetype-quickstart: 1.1)

Maven chiederà i dettagli del progetto. Immettere i dettagli del progetto come richiesto. Premere Invio se viene fornito il valore predefinito. Puoi sovrascriverli inserendo il tuo valore.

Define value for property 'groupId': : com.companyname.insurance
Define value for property 'artifactId': : health
Define value for property 'version': 1.0-SNAPSHOT:
Define value for property 'package': com.companyname.insurance:

Maven chiederà la conferma dei dettagli del progetto. Premere Invio o premere Y.

Confirm properties configuration:
groupId: com.companyname.insurance
artifactId: health
version: 1.0-SNAPSHOT
package: com.companyname.insurance
Y:

Ora Maven inizierà a creare la struttura del progetto e visualizzerà quanto segue:

[INFO]-----------------------------------------------
[INFO] Using following parameters for creating project
from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO]-----------------------------------------------

[INFO] Parameter: groupId, Value: com.companyname.insurance
[INFO] Parameter: packageName, Value: com.companyname.insurance
[INFO] Parameter: package, Value: com.companyname.insurance
[INFO] Parameter: artifactId, Value: health
[INFO] Parameter: basedir, Value: C:\MVN
[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] project created from Old (1.x) Archetype in dir: C:\MVN\health
[INFO]-----------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO]-----------------------------------------------
[INFO] Total time: 4 minutes 12 seconds
[INFO] Finished at: Fri Jul 13 11:10:12 IST 2012
[INFO] Final Memory: 20M/90M
[INFO]-----------------------------------------------

Progetto creato

Adesso vai a C:\ > MVNdirectory. Vedrai un progetto di applicazione java creato, denominatohealth, che è stato dato come artifactIdal momento della creazione del progetto. Maven creerà un layout di directory standard per il progetto come mostrato di seguito -

Creato POM.xml

Maven genera un file POM.xml per il progetto come elencato di seguito -

<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.insurance</groupId>
   <artifactId>health</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>health</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <dependencies>
      <dependency>
      <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
</project>

Creato App.java

Maven genera un file sorgente java di esempio, App.java per il progetto come elencato di seguito -

Posizione: C:\ > MVN > health > src > main > java > com > companyname > insurance > App.java.

package com.companyname.insurance;

/**
   * Hello world!
   *
*/
public class App {
   public static void main( String[] args ) {
      System.out.println( "Hello World!" );
   }
}

Creato AppTest.java

Maven genera un file di test sorgente java di esempio, AppTest.java per il progetto come elencato di seguito -

Posizione: C:\ > MVN > health > src > test > java > com > companyname > insurance > AppTest.java.

package com.companyname.insurance;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
   * Unit test for simple App.
*/
public class AppTest extends TestCase {
   /**
      * Create the test case
      *
     * @param testName name of the test case
   */
   public AppTest( String testName ) {
      super( testName );
   }
   /**
      * @return the suite of tests being tested
   */
   public static Test suite() {
      return new TestSuite( AppTest.class );
   }
   /**
      * Rigourous Test :-)
   */
   public void testApp() {
      assertTrue( true );
   }
}

Ora puoi vedere il potere di Maven. Puoi creare qualsiasi tipo di progetto usando un singolo comando in Maven e puoi avviare il tuo sviluppo.

Archetipi diversi

Sr.No. ArtifactID dell'archetipo e descrizione
1

maven-archetype-archetype

Un archetipo, che contiene un esempio di archetipo.

2

maven-archetype-j2ee-simple

Un archetipo, che contiene un'applicazione J2EE di esempio semplificata.

3

maven-archetype-mojo

Un archetipo, che contiene un esempio di un plug-in Maven di esempio.

4

maven-archetype-plugin

Un archetipo, che contiene un plug-in Maven di esempio.

5

maven-archetype-plugin-site

Un archetipo, che contiene un sito di plug-in Maven di esempio.

6

maven-archetype-portlet

Un archetipo, che contiene un portlet JSR-268 di esempio.

7

maven-archetype-quickstart

Un archetipo, che contiene un progetto Maven di esempio.

8

maven-archetype-simple

Un archetipo, che racchiude un semplice progetto Maven.

9

maven-archetype-site

Un archetipo, che contiene un sito Maven di esempio per dimostrare alcuni dei tipi di documenti supportati come APT, XDoc e FML e dimostra come i18n il tuo sito.

10

maven-archetype-site-simple

Un archetipo, che contiene un sito Maven di esempio.

11

maven-archetype-webapp

Un archetipo, che contiene un progetto Maven Webapp di esempio.