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 分钟前
基于springboot的食品仓库管理系统
java·spring boot·后端
上海广测检测科技有限公司32 分钟前
蓝牙音箱的 BQB 认证:音频服务层组合、引用链判定与测试状态设定
经验分享
步行cgn1 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川1 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵1 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David1 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1002 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
一木 之林2 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
niucloud-admin2 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质3 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring