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 运行环境

相关推荐
敬往事一杯酒哈16 小时前
海康 AGV 导航读码器学习
学习
代码什么用16 小时前
Spring基础使用
java·后端·spring
Su米苏17 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
码云数智-园园17 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁17 小时前
Java 异常体系详解:从字节码原理到最佳实践
java
青绿蓝LCA低碳研究院17 小时前
FSLCI首次在印度举办会议,我们需要学习什么? · 青绿蓝
经验分享
蜗牛互联网17 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
qq_2842740518 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
禾小西18 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨18 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言