Maven学习(一)

一、Maven 是什么?

Maven 翻译为"专家"或"内行",是一款跨平台的项目管理工具,主要服务于 Java 平台,功能涵盖:

  • 项目构建:编译、测试、打包、部署等自动化流程。

  • 依赖管理:自动下载和管理第三方库。

  • 项目信息管理:管理项目描述、开发者信息等。

理想的构建流程:

  • 高度自动化

  • 跨平台

  • 标准化流程

  • 可重用组件


二、为什么选择 Maven?

工具 缺点
手动 IDE 操作繁琐,构建步骤独立,易出错,配置不统一
Ant 无约定目录结构,无生命周期,无依赖管理
Maven 约定优于配置,生命周期管理,依赖管理,标准化构建

三、Maven 的核心模型

Maven 的核心是 POM(Project Object Model) ,通过 pom.xml 文件定义项目的坐标、依赖、插件等。


四、Maven 安装与配置

1. 安装前提

  • JDK 1.8+

  • 下载 Maven 3.6(建议使用稳定版本)

2. 环境变量配置

  • MAVEN_HOME:指向 Maven 解压目录

  • Path:添加 %MAVEN_HOME%\bin

  • MAVEN_OPTS:可选,设置 JVM 参数如 -Xms128m -Xmx512m

3. 验证安装

复制代码
bash

mvn -v

五、第一个 Maven 项目

目录结构约定

复制代码
项目名称/
  src/
    main/
      java/          # 存放项目的.java源文件
      resources/     # 存放项目资源文件(如spring、mybatis配置文件)
    test/
      java/          # 存放测试.java文件(如JUnit测试类)
      resources/     # 存放测试资源文件
  pom.xml            # Maven核心配置文件
  target/            # 项目输出位置(编译后自动生成)

pom.xml 示例

复制代码
xml

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.qcby.maven</groupId>
  <artifactId>Hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.9</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

常用命令

命令 作用
mvn compile 编译源代码
mvn clean 清理 target 目录
mvn test 运行测试
mvn package 打包(jar/war)
mvn install 安装到本地仓库

六、Maven 仓库管理

仓库类型

  • 本地仓库 :默认 ~/.m2/repository,可修改

  • 中央仓库:Maven 官方维护,默认远程仓库

  • 私服:企业内部仓库,如 Nexus

本地仓库配置

修改 settings.xml

复制代码
xml

<localRepository>D:/maven/repo</localRepository>

七、IDEA 整合 Maven

全局配置

  • 设置 Maven 安装目录

  • 指定 settings.xml 和本地仓库路径

创建 Java 项目

  • 使用 maven-archetype-quickstart 骨架

创建 Java Web 项目

  • 使用 maven-archetype-webapp 骨架

  • 配置 Tomcat 运行环境

相关推荐
Dicky-_-zhang10 小时前
分布式系统限流熔断实战:保护微服务稳定性
java·jvm
脆皮炸鸡75510 小时前
进程信号~信号的产生
linux·服务器·开发语言·经验分享·笔记·学习方法
椰猫子10 小时前
SpringBoot(简介、基础配置、整合第三方技术)
java·spring boot·spring
_Evan_Yao10 小时前
计算机专业四年学习路线图(大一版)
学习
努力成为AK大王10 小时前
Java并发线程核心知识(一)
java·开发语言·面试
逆境不可逃10 小时前
【与我学 ClaudeCode】工具与执行篇:从 0 到 1 拆解 Agent Loop 与 Tool Use 的极简设计哲学
人工智能·学习·agent·claudecode
red_redemption10 小时前
自由学习记录(188)
学习
组合缺一10 小时前
Solon Flow 实战:用 50 行 YAML 实现一个请假审批流(含中断恢复、并行网关、条件分支)
java·solon·工作流·审批流·solon-flow·流程编排
我想我不够好。10 小时前
2025.5.18 2.5hour
学习
可依软件crf28610 小时前
几个笔记软件的优缺点
笔记