Java Maven
最后修改于 2025 年 6 月 9 日
在本文中,我们将展示如何在 Java 项目中使用 Maven
进行构建自动化和依赖管理。
什么是 Maven?
Maven
是一个强大的构建自动化和项目管理工具,主要用于 Java 项目。它通过提供标准的目录布局、依赖管理和一套全面的插件来简化构建过程,以应对各种任务。
Maven 采用声明式方法,您在此方法中描述您的项目是什么以及它需要什么,而不是如何构建它。这是通过一个名为 pom.xml
(Project Object Model) 的 XML 文件完成的,该文件包含项目信息和配置详细信息。
Maven 的主要优点包括自动化的依赖管理、标准化的项目结构、与 IDE 的集成以及用于测试、打包和部署的广泛插件生态系统。
安装与设置
在安装 Maven 之前,请确保您的系统上已安装 Java Development Kit (JDK) 8 或更高版本。Maven 需要 Java 才能运行。
安装 Maven
在 Windows 上
- 从
https://maven.apache.org/download.cgi
下载 Maven - 将归档文件提取到类似
C:\Program Files\Apache\maven
的目录中 - 将
bin
目录添加到您的 PATH 环境变量 - 将
M2_HOME
环境变量设置为 Maven 安装目录
在 macOS 上
$ brew install maven
在 Ubuntu/Debian 上
$ sudo apt update $ sudo apt install maven
验证安装
安装后,验证 Maven 是否正常工作
$ mvn --version Apache Maven 3.9.6 Maven home: /usr/share/maven Java version: 21.0.1, vendor: Eclipse Adoptium
基本概念
要有效地使用 Maven,理解这些核心概念至关重要。
项目对象模型 (POM)
pom.xml
文件是任何 Maven 项目的核心。它包含项目信息、依赖项、构建配置和插件定义。每个 Maven 项目在其根目录中都必须有一个 POM 文件。
坐标
Maven 使用坐标来唯一标识项目和依赖项。坐标包括:
- groupId: 通常是您组织的逆向域名
- artifactId: 项目名称
- version: 项目版本
标准目录布局
Maven 遵循标准目录结构,以促进项目之间的一致性
my-project/ ├── pom.xml ├── src/ │ ├── main/ │ │ ├── java/ # Application source code │ │ └── resources/ # Application resources │ └── test/ │ ├── java/ # Test source code │ └── resources/ # Test resources └── target/ # Compiled output (generated)
构建生命周期
Maven 有三个内置生命周期:default
、clean
和 site
。默认生命周期包括 compile、test、package 和 install 等阶段。
您的第一个 Maven 项目
让我们使用 archetype 插件创建一个简单的 Maven 项目,该插件可以生成项目模板。
创建项目
使用以下命令创建新 Maven 项目
$ mvn archetype:generate -DgroupId=com.example.myapp \ -DartifactId=my-first-maven-project \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DinteractiveMode=false
此命令创建一个具有项目结构和基本 pom.xml
文件的新目录。
项目结构
运行命令后,您将看到以下结构
my-first-maven-project/ ├── pom.xml └── src/ ├── main/ │ └── java/ │ └── com/ │ └── example/ │ └── myapp/ │ └── App.java └── test/ └── java/ └── com/ └── example/ └── myapp/ └── AppTest.java
构建项目
导航到项目目录并进行构建
$ cd my-first-maven-project $ mvn compile
运行测试并打包应用程序
$ mvn package
这会在 target
目录中创建一个 JAR 文件。
运行应用程序
执行生成的 JAR 文件
$ java -cp target/my-first-maven-project-1.0-SNAPSHOT.jar com.example.myapp.App Hello World!
应用程序将 "Hello World!" 打印到控制台,表明您的 Maven 项目已成功设置并运行。-cp
(选项代表 "classpath") 选项指定了运行应用程序的 JAR 文件的位置。com.example.myapp.App
是包含 main
方法的主类。
理解 POM
项目对象模型 (POM) 是 Maven 的基本单元。让我们检查一个基本的 pom.xml
文件的结构。
<?xml version="1.0" encoding="UTF-8"?> <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.myapp</groupId> <artifactId>my-first-maven-project</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>my-first-maven-project</name> <url>http://www.example.com</url> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> </project>
此 pom.xml
文件定义了一个简单的 Maven 项目,其中包含以下关键元素:
关键 POM 元素
让我们分解 pom.xml
文件的关键元素:
<modelVersion>4.0.0</modelVersion>
指定 POM 模型版本。当前,版本 4.0.0 是 Maven 2 和 3 的唯一受支持版本。
<groupId>com.example.myapp</groupId> <artifactId>my-first-maven-project</artifactId> <version>1.0-SNAPSHOT</version>
这三个元素构成了项目坐标,在 Maven 生态系统中唯一地标识您的项目。
<packaging>jar</packaging>
定义打包类型。常见的值包括 jar
、war
、ear
和 pom
。
<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>
Properties 部分允许您定义可在整个 POM 中重用的值。在这里,我们为编译指定了 Java 版本 11。
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>
Dependencies 部分列出了项目所需的外部库。scope
元素定义了依赖项的可用时间。Test 范围意味着它仅在测试期间可用。
常用 Maven 命令
以下是日常开发中必不可少的 Maven 命令:
$ mvn clean # Clean previous builds $ mvn compile # Compile source code $ mvn test # Run tests $ mvn package # Create JAR/WAR file $ mvn install # Install to local repository $ mvn dependency:tree # Show dependency tree
这些命令可以帮助您有效地管理项目生命周期。clean
命令删除 target
目录,该目录包含前几次构建的编译代码和构件。compile
命令编译源代码,test
命令运行单元测试,package
命令在 target
目录中创建 JAR 或 WAR 文件。
install
命令将构建的构件安装到您的本地 Maven 存储库中,使其可供其他项目使用。dependency:tree
命令显示项目的依赖项树,帮助您理解依赖项之间的关系。
来源
在本文中,我们展示了如何在 Java 项目中使用 Maven 进行构建自动化和依赖管理。
作者
列出所有Java教程。