当前位置: 首页 > news >正文

Maven详细解

Maven 工具介绍

Maven是Apache组织下的一个跨平台的项目管理工具,它主要用来帮助实现项目的构建、测试、打包和部署。Maven 提供了标准的软件生命周期模型和构建模型,通过配置就能对项目进行全面的管理。它的跨平台性保证了在不同的操作系统上可以使用相同的命令来完成相应的任务。Maven 将构建的过程抽象成一个个的生命周期过程,在不同的阶段使用不同的已实现插件来完成相应的实际工作,这种设计方法极大的避免了设计和脚本编码的重复,极大的实现了复用。

Maven 是一个基于项目对象模型(POM)的构建工具,用于 Java 项目的依赖管理、构建和生命周期管理。其主要特点包括:

  • 依赖管理:通过 pom.xml 文件自动下载和管理项目依赖。
  • 标准化项目结构:提供统一的目录布局,便于团队协作。
  • 构建生命周期:定义清晰的构建阶段(如编译、测试、打包、部署)。
  • 插件体系:支持通过插件扩展功能(如编译、静态分析等)。

Maven 下载与安装

  1. 下载 Maven

    • 访问 Apache Maven 官网,选择最新稳定版本的二进制压缩包(如 apache-maven-3.8.6-bin.zip)。
    • 解压到本地目录(如 C:\Program Files\apache-maven-3.8.6)。
  2. 配置环境变量

    • 添加系统变量 MAVEN_HOME,值为 Maven 解压路径(如 C:\Program Files\apache-maven-3.8.6)。
    • 编辑 Path 变量,追加 %MAVEN_HOME%\bin
    • 验证安装:命令行运行 mvn -v,输出版本信息即表示成功。

Maven 核心配置文件

POM 即 Project Object Module,项目对象模型,在 pom.xml 文件中定义了项目的基本信息、源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的 url、以及构建项目所用的插件,依赖继承关系。开发人员需按照 maven 定义的规则进行 POM 文件的编写。
groupId 定义了项目属于哪个组,这有助于在大的范围上区别项目。
artifactId 定义了这个项目在组中唯一的 ID,通常是工程的名称。
groupId 和 artifactId 一起定义了artifact 在仓库中的位置。
version 项目版本。

  • pom.xml:项目根配置文件,包含以下关键部分:
    <project>  <modelVersion>4.0.0</modelVersion>  <groupId>com.example</groupId>  <!-- 组织标识 -->  <artifactId>my-project</artifactId>  <!-- 项目标识 -->  <version>1.0.0</version>  <!-- 版本号 -->  <dependencies>  <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.12</version>  <scope>test</scope>  </dependency>  </dependencies>  
    </project>  
    


Maven 常用命令详解

项目生命周期命令
  1. 清理编译输出

    mvn clean  
    

    删除 target 目录及其内容。

  2. 编译项目

    mvn compile  
    

    生成 .class 文件到 target/classes 目录。

  3. 运行测试

    mvn test  
    

    执行 src/test/java 下的单元测试。

  4. 打包项目

    mvn package  
    

    生成 JAR/WAR 文件到 target 目录。

  5. 安装到本地仓库

    mvn install  
    

    将构建的产物安装到本地 Maven 仓库(默认 ~/.m2/repository)。

  6. 跳过测试

    mvn install -DskipTests  
    


依赖与插件管理
  1. 手动下载依赖

    mvn dependency:resolve  
    

  2. 生成依赖树

    mvn dependency:tree  
    

  3. 运行插件目标

    mvn archetype:generate  # 使用 archetype 插件生成项目骨架  
    


Maven 仓库类型

  • 本地仓库:本地磁盘上的依赖缓存目录(默认 ~/.m2/repository)。
  • 中央仓库:Maven 官方维护的公共仓库(无需配置)。
  • 私服仓库:如 Nexus、Artifactory,需在 pom.xmlsettings.xml 中配置。

配置优化建议

  1. 镜像加速
    修改 settings.xml(位于 ~/.m2/),添加阿里云镜像:

    <mirror>  <id>aliyun</id>  <mirrorOf>central</mirrorOf>  <url>https://maven.aliyun.com/repository/central</url>  
    </mirror>  
    

  2. 多模块管理
    使用 <modules> 标签在父 POM 中聚合子模块:

    <modules>  <module>module1</module>  <module>module2</module>  
    </modules>  
    

http://www.lryc.cn/news/591132.html

相关文章:

  • 3D Gaussian Splatting (3DGS) 从入门到精通:安装、训练与常见问题全解析
  • 【Bluedroid】btif_a2dp_sink_init 全流程源码解析
  • 【Leetcode】栈和队列算法题(逆波兰表达式、二叉树层序遍历、最小栈、栈的压入弹出序列)
  • CrewAI与LangGraph:下一代智能体编排平台深度测评
  • onenote千年老bug,字体bug (calibri微软雅黑) 的解决
  • 深度学习损失函数详解 | Binary Cross Entropy(二元交叉熵)原理 + 数学推导 + Python实现
  • 中科米堆CASAIM三维激光扫描仪用于注塑件3d扫描逆向建模
  • 【Linux】第一个小程序—进度条
  • 黑色风格音乐播放器网站模板(附完整源码)
  • 前端防复制实战指南:5 种主流方案效果对比与实现
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十三天
  • 数据库管理-第349期 Oracle DB 23.9新特性一览(20250717)
  • 【37】MFC入门到精通——MFC中 CString 数字字符串 转 WORD ( CString, WORD/int 互转)
  • 【华为】交换机vlan互访实验
  • 边缘智能革命:嵌入式机器学习如何让万物“思考”
  • CephFS 和 SSHFS 挂载指南:从配置到排错
  • SQL一些关于存储过程和使用的总结
  • 并发事务~
  • Selector的用法
  • 一台显示器上如何快速切换两台电脑主机?
  • Adobe Photoshop:数字图像处理的终极工具指南
  • JavaScript进阶篇——第八章 原型链、深浅拷贝与原型继承全解析
  • 爬虫逆向:一篇文章掌握 Hopper 的详细使用(macOS 和 Linux 反汇编程序:对可执行文件进行静态分析)
  • Alibaba-NLP/WebAgent 项目总结
  • 如何在PyCharm中删除虚拟环境
  • [MRCTF2020]PYWebsite
  • web APIs(更新中)
  • 中兴B860AV5.1-M2_S905L3SB最新完美版线刷包 解决指示灯异常问题
  • 【测试100问】为什么要做接口测试?
  • 大带宽服务器对于高流量网站的作用