English 中文(简体)
Maven - Project Templates
  • 时间:2024-12-22

Maven - Project Templates


Previous Page Next Page  

Maven provides users, a very large pst of different types of project templates (614 in numbers) using the concept of Archetype. Maven helps users to quickly start a new java project using the following command.


mvn archetype:generate

What is Archetype?

Archetype is a Maven plugin whose task is to create a project structure as per its template. We are going to use quickstart archetype plugin to create a simple java apppcation here.

Using Project Template

Let s open the command console, go to the C: > MVN directory and execute the following mvn command.


C:MVN>mvn archetype:generate 

Maven will start processing and will ask to choose the required archetype.



C:MVN>mvn archetype:generate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.2.0:generate (default-cp) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.2.0:generate (default-cp) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.2.0:generate (default-cp) @ 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:
1: remote -> am.ik.archetype:elm-spring-boot-blank-archetype (Blank multi project for Spring Boot + Elm)
2: remote -> am.ik.archetype:graalvm-blank-archetype (Blank project for GraalVM)
...
3021: remote -> za.co.absa.hyperdrive:component-archetype_2.12 (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 1843:

Press Enter to choose to default option (1843: maven-archetype-quickstart)

Maven will ask for particular version of archetype.


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
7: 1.3
8: 1.4
Choose a number: 8:

Press Enter to choose to default option (8: maven-archetype-quickstart:1.4)

Maven will ask for the project detail. Enter project detail as asked. Press Enter if the default value is provided. You can override them by entering your own value.


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 will ask for the project detail confirmation. Press enter or press Y.


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

Now Maven will start creating the project structure and will display the following −


[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.companyname.insurance
[INFO] Parameter: artifactId, Value: health
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.companyname.insurance
[INFO] Parameter: packageInPathFormat, Value: com/companyname/insurance
[INFO] Parameter: package, Value: com.companyname.insurance
[INFO] Parameter: groupId, Value: com.companyname.insurance
[INFO] Parameter: artifactId, Value: health
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: C:MVNhealth
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  04:44 min
[INFO] Finished at: 2021-12-13T18:52:59+05:30
[INFO] ------------------------------------------------------------------------

Created Project

Now go to C: > MVN directory. You ll see a java apppcation project created, named health, which was given as artifactId at the time of project creation. Maven will create a standard directory layout for the project as shown below −

project structure

Created POM.xml

Maven generates a POM.xml file for the project as psted below −


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

Created App.java

Maven generates sample java source file, App.java for the project as psted below −

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


package com.companyname.insurance;

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

Created AppTest.java

Maven generates sample java source test file, AppTest.java for the project as psted below −

Location: 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.
*/
pubpc class AppTest extends TestCase {
   /**
   * Create the test case
   *
   * @param testName name of the test case
   */
   pubpc AppTest( String testName ) {
      super( testName );
   }
   /**
      * @return the suite of tests being tested
   */
   pubpc static Test suite() {
      return new TestSuite( AppTest.class );
   }
   /**
      * Rigourous Test :-)
   */
   pubpc void testApp() {
      assertTrue( true );
   }
}

Now you can see the power of Maven. You can create any kind of project using single command in maven and can kick-start your development.

Different Archetypes

Sr.No. Archetype ArtifactIds & Description
1

maven-archetype-archetype

An archetype, which contains a sample archetype.

2

maven-archetype-j2ee-simple

An archetype, which contains a simppfied sample J2EE apppcation.

3

maven-archetype-mojo

An archetype, which contains a sample a sample Maven plugin.

4

maven-archetype-plugin

An archetype, which contains a sample Maven plugin.

5

maven-archetype-plugin-site

An archetype, which contains a sample Maven plugin site.

6

maven-archetype-portlet

An archetype, which contains a sample JSR-268 Portlet.

7

maven-archetype-quickstart

An archetype, which contains a sample Maven project.

8

maven-archetype-simple

An archetype, which contains a simple Maven project.

9

maven-archetype-site

An archetype, which contains a sample Maven site to demonstrates some of the supported document types pke APT, XDoc, and FML and demonstrates how to i18n your site.

10

maven-archetype-site-simple

An archetype, which contains a sample Maven site.

11

maven-archetype-webapp

An archetype, which contains a sample Maven Webapp project.

Advertisements