当前位置:首页 > 技术 > 正文内容

Maven 入门指南:核心概念与环境搭建

访客 技术 2026年6月11日 1

什么是 Maven?

Maven 是 Apache 软件基金会维护的一个项目管理和构建自动化工具,主要用于 Java 项目的依赖管理、编译、测试和打包。它通过一个标准化的项目结构和声明式的配置文件(POM)来简化开发流程。官方网站为:http://maven.apache.org/

安装与基础配置

在开始使用 Maven 前,需确保系统中已正确安装并配置了 JDK。可访问 Maven 官方下载页面获取最新版本的二进制包。

将下载的压缩包解压至指定目录,例如:D:\maven\apache-maven-3.8.6

设置环境变量

  • M2_HOME:指向 Maven 的安装路径,如:D:\maven\apache-maven-3.8.6
  • Path:添加 %M2_HOME%\bin 到系统 Path 变量中,注意使用分号与其他条目分隔。

配置完成后,在命令行执行 mvn -v 验证是否安装成功,若显示 Maven 和 Java 版本信息,则表示配置成功。

创建第一个 Maven 项目

按照 Maven 的标准目录结构,手动创建如下项目骨架:

HelloWorld/
├── src/
│   ├── main/
│   │   └── java/
│   │       └── com/
│   │           └── example/
│   │               └── App.java
│   └── test/
│       └── java/
│           └── com/
│               └── example/
│                   └── AppTest.java
├── pom.xml

编写主类 App.java

package com.example;

public class App {
    public String greet() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        System.out.println(new App().greet());
    }
}

编写测试类 AppTest.java

使用 JUnit 编写单元测试,需要先在 pom.xml 中引入依赖。

package com.example;

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class AppTest {
    @Test
    public void testGreet() {
        App app = new App();
        String result = app.greet();
        assertEquals("Hello World!", result);
    }
}

配置 pom.xml 文件

POM(Project Object Model)是 Maven 的核心配置文件,定义项目元数据及依赖关系。

<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>HelloWorld</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <!-- JUnit 测试框架 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

常用 Maven 命令实践

  • mvn compile:编译主源码,输出到 target/classes
  • mvn test-compile:编译测试代码
  • mvn test:运行所有单元测试
  • mvn package:打包项目为 JAR 文件(位于 target/ 目录下)
  • mvn clean:清除 target 目录
  • mvn install:将项目安装到本地仓库,供其他项目引用

进入项目根目录后执行 mvn test,控制台将显示测试结果:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.012 sec
Results:
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS

执行 mvn package 后,可在 target/HelloWorld-1.0.0.jar 找到生成的 JAR 包。

修改本地仓库路径

Maven 默认将依赖库缓存于用户目录下的 .m2/repository,通常位于 C 盘。为避免占用系统盘空间,可通过修改配置迁移路径。

编辑 conf/settings.xml 文件,在 <settings> 标签内添加:

<localRepository>E:/maven/repo</localRepository>

保存后,所有后续下载的依赖都将存储至新路径。

远程依赖查找推荐使用 https://mvnrepository.com/,搜索所需库并复制对应的 Maven 依赖片段即可集成。

标签: mavenJUnit

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。