Maven 简明教程
Maven - Project Templates
Maven 使用 Archetype 的概念为用户提供了非常多的不同类型的项目模板列表(614 个)。Maven 帮助用户使用以下命令快速启动新的 Java 项目。
Maven provides users, a very large list 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 是一个 Maven 插件,其任务是根据其模板创建项目结构。我们将在本文中使用 quickstart archetype 插件来创建简单的 Java 应用程序。
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 application here.
Using Project Template
让我们打开命令控制台,转到 C:\ > MVN 目录,然后执行以下 mvn 命令。
Let’s open the command console, go to the C:\ > MVN directory and execute the following mvn command.
C:\MVN>mvn archetype:generate
Maven 将开始处理,并将要求选择所需的模版。
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-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.2.0:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.2.0: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:
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:
按 Enter 键选择默认选项 (1843: maven-archetype-quickstart)
Press Enter to choose to default option (1843: maven-archetype-quickstart)
Maven 将询问模版特定版本。
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:
按 Enter 键选择默认选项 (8: maven-archetype-quickstart:1.4)
Press Enter to choose to default option (8: maven-archetype-quickstart:1.4)
Maven 将询问项目详细信息。按照要求输入项目详细信息。如果提供了默认值,请按 Enter 键。你可以通过输入自己的值来覆盖它们。
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 将询问项目详细信息确认。按 Enter 键或按 Y 键。
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:
现在,Maven 将开始创建项目结构,并将显示以下内容:
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:\MVN\health
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:44 min
[INFO] Finished at: 2021-12-13T18:52:59+05:30
[INFO] ------------------------------------------------------------------------
Created Project
现在,转到 C:\ > MVN 目录。你将看到一个名为 health 的 Java 应用程序项目,即在创建项目时提供的 artifactId 。Maven 将为该项目创建如下所示的标准目录布局 −
Now go to C:\ > MVN directory. You’ll see a java application 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 −
Created POM.xml
Maven 为该项目生成了一个 POM.xml 文件,如下所示 −
Maven generates a POM.xml file for the project as listed 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 为该项目生成了一个示例 Java 源文件 App.java,如下所示 −
Maven generates sample java source file, App.java for the project as listed below −
位置: C:\ > MVN > health > src > main > java > com > companyname > insurance > App.java 。
Location: 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!" );
}
}
Created AppTest.java
Maven 为该项目生成了一个示例 Java 源代码测试文件 AppTest.java,如下所示 −
Maven generates sample java source test file, AppTest.java for the project as listed below −
位置: C:\ > MVN > health > src > test > java > com > companyname > insurance > AppTest.java 。
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.
*/
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 );
}
}
你现在可以看到 Maven 的强大功能。你可以在 maven 中使用单个命令创建任何类型的项目,并且立即启动你的开发。
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 simplified sample J2EE application. |
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 like 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. |