Maven 五分钟入门

🌟 一、一句话概括

Maven 是一个 Java 项目的自动化构建工具,它帮你:

  1. 快速创建标准项目结构(不用手动建文件夹)
  2. 自动下载依赖库(比如 JUnit、Spring 等)
  3. 编译、测试、打包代码(一条命令搞定)
  4. 统一管理项目配置(通过 pom.xml

它就像 Java 世界的"智能工厂",你只管写代码,剩下的交给 Maven。


🔧 二、前置条件:你需要什么?

✅ 必须:

  • 会安装软件(比如 JDK、Maven)
  • 已安装 Java JDK(因为 Maven 是用 Java 写的)

💡 提示:JDK ≠ JRE。你需要的是 Java Development Kit,不是普通运行环境。


📦 三、安装 Maven

  1. 下载 Maven(官网 apache.org
  2. 解压到某个目录(如 C:\apache-maven-3.6.3
  3. 配置环境变量 MAVEN_HOMEPATH
  4. 验证安装:
bash 复制代码
mvn --version

✅ 输出示例:

复制代码
Apache Maven 3.6.3
Java version: 1.8.0_232
OS name: "windows 10"

📌 意义:

  • 证明 Maven 安装成功
  • 显示你用的 Java 版本和操作系统

⚠️ 如果失败,请检查 Java 是否安装、环境变量是否正确。


🏗 四、创建一个 Maven 项目(自动生成骨架)

运行这条命令:

bash 复制代码
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.5 -DinteractiveMode=false

🔍 拆解命令参数:

参数 含义
archetype:generate 使用 archetype 插件生成项目模板
-DgroupId 公司/组织名(类似包名前缀) → com.mycompany.app
-DartifactId 项目名 → my-app
-DarchetypeArtifactId 使用哪个模板?这里是快速启动模板
-DinteractiveMode=false 非交互模式(自动完成,不让你一步步选)

📌 类比:

就像你开餐厅,Maven 帮你:

  • 盖好房子(目录结构)
  • 装好厨房(源码目录)
  • 配好菜单(pom.xml)
  • 不用你自己一砖一瓦去搭

🗂 五、生成的项目结构

执行后会生成一个目录:my-app

结构如下:

复制代码
my-app/
├── pom.xml
└── src
    ├── main/java/.../App.java      ← 主程序
    └── test/java/.../AppTest.java  ← 测试代码

✅ 关键文件说明:

文件 作用
pom.xml 项目核心配置文件(Project Object Model)
src/main/java/App.java 主程序入口
src/test/java/AppTest.java 单元测试代码

📄 六、pom.xml 是什么?------项目的"身份证+说明书"

这是 Maven 的核心配置文件,相当于项目的"大脑"。

xml 复制代码
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  
  <properties>
    <maven.compiler.release>17</maven.compiler.release>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

🔍 核心字段解释:

字段 含义
groupId 组织 ID(类似公司域名倒写)
artifactId 项目名
version 版本号(SNAPSHOT 表示开发中)
dependencies 依赖的库(Maven 会自动下载)
properties 属性配置(如指定 Java 版本)

💡 重点:

你不需要手动去网上找 JUnit 的 jar 包,只要在 pom.xml 里声明依赖,Maven 就会自动下载并管理


🛠 七、构建项目:mvn package

运行:

bash 复制代码
mvn package

✅ 发生了什么?

Maven 会自动执行以下步骤(构建生命周期):

  1. validate → 检查项目是否正确
  2. compile → 编译 .java 文件为 .class
  3. test → 运行单元测试(JUnit)
  4. package → 打包成 JAR 文件

最终生成:

复制代码
target/my-app-1.0-SNAPSHOT.jar

✅ 构建成功提示:

复制代码
[INFO] BUILD SUCCESS

▶️ 八、运行你的程序

bash 复制代码
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

输出:

复制代码
Hello World!

📌 解释:

  • -cp = classpath,告诉 Java 去哪里找类文件
  • com.mycompany.app.App = 主类全名(包名 + 类名)

☕ 九、支持 Java 9+(重要!)

默认情况下,旧版 Maven 可能不支持 Java 9 及以上版本。

✅ 解决方法:

pom.xml 中添加:

xml 复制代码
<properties>
    <maven.compiler.release>11</maven.compiler.release>
</properties>
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

📌 作用:

  • 使用新版编译插件(3.8.1+)
  • 设置目标 Java 版本为 11(可改为 8, 17, 21 等)

🔄 十、Maven 的"生命周期"Phase(核心概念)

Maven 不是随便执行命令,而是有一套标准流程 ,叫做 Build Lifecycle

常见 Phase(阶段):

阶段 作用
validate 验证项目结构
compile 编译源码
test 运行单元测试
package 打包(JAR/WAR)
verify 检查包是否合规
install 安装到本地仓库(供其他项目使用)
deploy 部署到远程仓库(如公司私服)

📌 特点:

当你运行 mvn package,Maven 会自动执行之前所有阶段(validate → compile → test → package)


🧹 十一、其他常用命令

命令 作用
mvn clean 删除 target/ 目录(清理旧构建)
mvn test 只运行测试
mvn compile 只编译,不打包
mvn install 打包 + 安装到本地仓库
mvn site 生成项目文档网站
mvn dependency:copy-dependencies 下载所有依赖到 target/dependency/

✅ 组合命令示例:

bash 复制代码
mvn clean dependency:copy-dependencies package

清理 → 下载依赖 → 打包(一条龙服务)


📚 十二、site:生成项目文档

bash 复制代码
mvn site

生成的文档在:

复制代码
target/site/

包含:

  • 项目信息
  • 依赖列表
  • 测试报告
  • 代码质量分析(配合插件)

📌 适合团队协作、项目归档。


✅ 十三、总结:Maven 的核心价值

优势 说明
🏗 标准化项目结构 所有 Maven 项目长得一样,新人秒懂
📦 自动管理依赖 不用手动下载 jar 包,不怕版本冲突
🛠 一键构建 编译、测试、打包、部署,一条命令搞定
🧩 插件化架构 支持各种工具集成(Sonar、Docker 等)
🌐 仓库机制 支持本地 + 远程(中央仓库、私服)

🚫 十四、作者提醒:不要滥用 777?不,是不要乱设权限!

原文最后说:"Never set things to 777 unless you have a really good reason."

虽然这是在讲 chmod,但对 Maven 也有启示:

  • 不要随意添加不必要的依赖
  • 不要随便改 pom.xml 的关键配置
  • 不要跳过测试直接打包上线

💬 最后一句话理解全文:

Maven 就像 Java 项目的"智能管家" :你只要告诉它"我要建一个项目"(archetype:generate),再告诉它"需要哪些库"(pom.xml),最后说"打包吧"(mvn package),剩下的下载、编译、测试、打包全由它自动完成------从此告别手动配置的混乱时代。

🎯 现在你已经完成了"Maven 五分钟入门",接下来可以深入学习:

  • 如何用 Maven 构建 Web 项目(war 包)
  • 如何集成 Spring Boot
  • 如何发布到私有仓库
  • 如何做持续集成(CI/CD)

Maven,是通往专业 Java 开发的第一步。🚀

相关推荐
cj6341181504 小时前
SpringBoot配置Redis
java·后端
用坏多个鼠标4 小时前
Nacos和Nginx集群,项目启动失败问题
java·开发语言
TangKenny5 小时前
基于EasyExcel的动态列映射读取方案
java·easyexcel
安冬的码畜日常5 小时前
【JUnit实战3_19】第十章:用 Maven 3 运行 JUnit 测试(下)
java·测试工具·junit·单元测试·maven·junit5
lemon_sjdk5 小时前
软件开发模式架构选择
java·架构·软件开发·前后端分离
董广明5 小时前
单元测试(JUnit、Mockito、PowerMock )
java·经验分享·junit·单元测试
Lisonseekpan5 小时前
Java Stream 流式编程
java·后端
安冬的码畜日常5 小时前
【JUnit实战3_18】第十章:用 Maven 3 运行 JUnit 测试(上)
测试工具·junit·maven·artifact·junit5
沐浴露z5 小时前
Kafka Consumer 消费流程详解
java·分布式·kafka