摘要 Maven(mvn)是一种强大的构建工具,广泛用于Java项目的管理和构建。本文从零开始,深入剖析Maven的基础知识、核心命令、典型用法,并通过丰富的代码示例让初学者快速掌握它。
Maven 是一款基于 POM(Project Object Model)的构建工具,主要用于项目依赖管理、生命周期管理和自动化构建。无论是小型项目还是企业级应用,Maven 都提供了强大的功能,帮助开发者提高开发效率。
下载 Maven
解压并配置环境变量
export MAVEN_HOME=/path/to/maven
export PATH=$MAVEN_HOME/bin:$PATH验证安装
mvn -v输出如下表明安装成功:
Apache Maven 3.x.x
Java version: 1.x.x
Default locale: en_US, platform encoding: UTF-8位置: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.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
</project>~/.m2/repository。清理生命周期:
mvn clean删除项目的生成文件。
默认生命周期: 包括编译、测试、打包等:
mvn package站点生命周期: 用于生成项目文档:
mvn site编译项目:
mvn compile跳过测试构建:
mvn package -DskipTests查看项目依赖树:
mvn dependency:tree添加依赖: 在 pom.xml 中:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.9</version>
</dependency>
</dependencies>Maven 的强大功能来自其插件体系。
运行项目
mvn exec:java -Dexec.mainClass="com.example.App"代码检查
mvn checkstyle:check创建 Maven 项目:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false目录结构:
my-app/
├── pom.xml
├── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── App.java
└── test
└── java
└── com
└── example
└── AppTest.java核心代码:
App.java package com.example;
public class App {
public static void main(String[] args) {
System.out.println("Hello, Maven!");
}
}AppTest.javapackage com.example;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
public class AppTest {
@Test
public void shouldAnswerWithTrue() {
assertTrue(true);
}
}构建和运行:
构建项目:
mvn package运行项目:
java -cp target/my-app-1.0-SNAPSHOT.jar com.example.App通过本文,我们从零了解了 Maven 的基础知识和核心功能。Maven 在项目构建、依赖管理、插件扩展等方面的优势,极大地提高了开发效率。如果你是初学者,只需从基础命令开始练习,就能逐渐掌握 Maven 的全部功能。