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

相关推荐
橘子编程2 小时前
编译原理:从理论到实战全解析
java·linux·python·ubuntu
世人万千丶2 小时前
Flutter 框架跨平台鸿蒙开发 - 数独游戏应用开发文档
学习·flutter·游戏·华为·harmonyos·鸿蒙
sibylyue2 小时前
Nginx\Tomcat\Jetty\Netty
java·nginx·http
于先生吖2 小时前
基于 SpringBoot 架构,高性能 JAVA 动漫短剧系统源码
java·开发语言·spring boot
斌味代码2 小时前
SpringBoot 3 实战:虚拟线程、全局异常处理与 JWT 鉴权完整方案
java·spring boot·后端
AI_零食2 小时前
开源鸿蒙跨平台Flutter开发:研究生科研贡献雷达矩阵架构
学习·flutter·ui·华为·矩阵·开源·harmonyos
电商API&Tina2 小时前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php
迷路爸爸1802 小时前
Docker 入门学习笔记 03:端口映射到底是什么,为什么容器启动了却访问不到
笔记·学习·docker
Mr_Xuhhh3 小时前
深入理解Java Map与Set:从二叉搜索树到哈希表,全面解析搜索数据结构
java·数据结构·散列表