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

相关推荐
·薯条大王13 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
上海广测检测科技有限公司14 小时前
打印机CCC认证详解:产品范围界定与安全及电磁兼容测试要求解读
经验分享
ZJH__GO16 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆16 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光17 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林17 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
marvelyu18 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
今儿敲了吗18 小时前
CO——CPU
笔记
今儿敲了吗18 小时前
Python ——第三方包
笔记·python
圆奋奋18 小时前
FreeRTOS学习(三)- 任务调度模块
学习·开源·freertos