Maven 简明教程
Maven - Project Templates
Maven 使用 Archetype 的概念为用户提供了非常多的不同类型的项目模板列表(614 个)。Maven 帮助用户使用以下命令快速启动新的 Java 项目。
mvn archetype:generate
What is Archetype?
Archetype 是一个 Maven 插件,其任务是根据其模板创建项目结构。我们将在本文中使用 quickstart archetype 插件来创建简单的 Java 应用程序。
Using Project Template
让我们打开命令控制台,转到 C:\ > MVN 目录,然后执行以下 mvn 命令。
C:\MVN>mvn archetype:generate
Maven 将开始处理,并将要求选择所需的模版。
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)
Maven 将询问模版特定版本。
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)
Maven 将询问项目详细信息。按照要求输入项目详细信息。如果提供了默认值,请按 Enter 键。你可以通过输入自己的值来覆盖它们。
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 键。
Confirm properties configuration:
groupId: com.companyname.insurance
artifactId: health
version: 1.0-SNAPSHOT
package: com.companyname.insurance
Y:
现在,Maven 将开始创建项目结构,并将显示以下内容:
[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 将为该项目创建如下所示的标准目录布局 −
Created POM.xml
Maven 为该项目生成了一个 POM.xml 文件,如下所示 −
<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,如下所示 −
位置: 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,如下所示 −
位置: 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 中使用单个命令创建任何类型的项目,并且立即启动你的开发。
Different Archetypes
Sr.No. |
Archetype ArtifactIds & Description |
1 |
maven-archetype-archetype archetype,其中包含示例 archetype。 |
2 |
maven-archetype-j2ee-simple archetype,其中包含一个简化示例 J2EE 应用程序。 |
3 |
maven-archetype-mojo archetype,其中包含一个示例 Maven 插件。 |
4 |
maven-archetype-plugin archetype,其中包含一个示例 Maven 插件。 |
5 |
maven-archetype-plugin-site archetype,其中包含一个示例 Maven 插件网站。 |
6 |
maven-archetype-portlet archetype,其中包含一个示例 JSR-268 小部件。 |
7 |
maven-archetype-quickstart archetype,其中包含一个示例 Maven 项目。 |
8 |
maven-archetype-simple archetype,其中包含一个简单的 Maven 项目。 |
9 |
maven-archetype-site archetype,其中包含一个示例 Maven 网站,用于展示一些受支持的文档类型(如 APT、XDoc 和 FML)并展示如何将你的网站国际化。 |
10 |
maven-archetype-site-simple archetype,其中包含一个示例 Maven 网站。 |
11 |
maven-archetype-webapp archetype,其中包含一个示例 Maven Webapp 项目。 |