项目管理工具-Maven

news2025/6/23 17:20:43

文章目录

  • Maven概述
    • 俩个经典的作用
    • Maven 仓库
  • Maven 常用命令
  • Maven 指令的生命周期
  • Maven 的概念模型
  • Maven 工程的认识

Maven概述

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。

俩个经典的作用

Maven可以构建工程,管理 jar 包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点。

  1. Maven 的依赖管理

在配置文件pom.xml中配置我们要使用的jar包的坐标。

maven 工程中不直接将jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需jar 包的坐标,这样就很好的避免了jar 直接引入进来,在需要用到jar 包的时候,只要查找pom.xml 文件,再通过 pom.xml 文件中的坐标,到一个专门用于”存放 jar 包的仓库”**(maven 仓库)**中根据坐标从而找到这些jar 包,再把这些jar包拿去运行。

注意:
maven 中也有索引的概念,通过建立索引,可以大大提高加载 jar 包的速度。

  1. 项目的一键构建

项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。

构建如下图所示:
在这里插入图片描述

Maven 仓库

  1. maven仓库的分类
  • 用来存储从远程仓库或中央仓库下载的插件和jar 包,项目使用一些插件或jar 包, 优先从本地仓库查找。
  • 远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
  • 中央仓库 :在 maven 软件中内置一个远程仓库地址 https://mvnrepository.com/ ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。
  1. Maven 本地仓库的配置
    在这里插入图片描述
    可以在maven中的conf目录下面的settings.xml文件修改本地maven的配置文件。

在这里插入图片描述
在localRepository这个标签上可以修改本地的maven仓库的地址。

Maven 常用命令

进入到当前项目中,来使用maven中的一些常用命令。
在这里插入图片描述
输入CMD命令进入到终端。
在这里插入图片描述

  1. compile
    compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。
    在这里插入图片描述

  2. test
    test 是maven工程的测试命令mvn test,会执行src/test/java 下的单元测试类。
    在这里插入图片描述
    这里由于我们是新建的工程因此没有测试代码,显示No tests to run。

  3. clean
    clean 是maven 工程的清理命令,执行 clean 会删除target 目录及内容。
    在这里插入图片描述

  4. package
    package 是maven 工程的打包命令,对于java 工程执行package 打成jar 包,对于web 工程打成war 包。
    在这里插入图片描述

  5. install
    install 是maven 工程的安装命令,执行install 将maven 打成jar 包或 war 包发布到本地仓库。
    在这里插入图片描述

Maven 指令的生命周期

maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”。

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
  • Site Lifecycle 生成项目报告,站点,发布站点。

Maven 的概念模型

  • 项目对象模型 (Project Object Model)
    一个maven 工程都有一个pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、插件目标等。
  • 项目生命周期(Project Lifecycle)
    使用maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些过程规范为一个生命周期。
  • 依赖管理系统(Dependency Management System)
    通过maven 的依赖管理对项目所依赖的jar 包进行统一管理。
  • 一组标准集合
    maven 将整个项目管理过程定义一组标准,有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
  • 插件目标
    maven 管理项目生命周期过程都是基于插件完成的。

Maven 工程的认识

  1. 点击New Project,输入项目的名称(Name)、项目的存放地址(Location)、构建的系统(Maven),信息填写好了之后,点击Create按钮。
    在这里插入图片描述

  2. 点击File之后点击Settings。
    在这里插入图片描述

  3. 找到Build、Execution、Deployment里面的Build Tools里面的Maven,将maven的本地路径、配置文件路径和本地仓库路径补充完整。
    在这里插入图片描述

  4. 创建好之后,点击maven按钮,点击install按钮。
    在这里插入图片描述

  5. 最后图片如下图
    在这里插入图片描述

  • src/main/java —— 存放项目的.java 文件
  • src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
  • target —— 项目输出位置,编译后的class 文件会输出到此目录
  • pom.xml——maven 项目核心配置文件

欢迎java热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏,另外对编程感兴趣的友友们可以加以下群共同学习。群号:127871664

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录一次Linux服务器被人使用SSH字典爆破

2024年1.20凌晨睡了一觉,早上起来用termux远程ssh登录小主机发现密码没法登录了,一直显示密码错误,到了晚上用电脑ssh连接小主机,发现小主机真的没法登录了,直接把小主机接上屏幕查看,发现密码被人修改了&a…

什么是Socket、Socket在Java中的应用、Socket和SocketChannel区别

目录 什么是Socket TCP\IP UDP体系结构 Socket和TCP\IP的关系 Socket在Java中的应用 Socket和SocketChannel的区别 SocketChannel和Selector的关系 服务器的设计演化历程---多线程版 服务器的设计演化历程---线程池版 服务器的设计演化历程---Selector版 参考链接 什么…

深度学习loss

pytorch模型训练demo代码 在PyTorch中,模型训练通常涉及几个关键步骤:定义模型、定义损失函数、选择优化器、准备数据加载器、编写训练循环。以下是一个简单的PyTorch模型训练演示代码,该代码实现了一个用于手写数字识别(使用MNIS…

大数据——HBase原理

摘要 HBase 是一个开源的、非关系型的分布式数据库系统,主要用于存储海量的结构化和半结构化数据。它是基于谷歌的 Bigtable 论文实现的,运行在 Hadoop 分布式文件系统(HDFS)之上,并且可以与 Hadoop 生态系统的其他组…

线程与进程的区别与联系,线程状态的切换

目录 什么是线程?进程?协程? 线程和进程的区别? 多线程的好处: 单核CPU有没有必要上多线程? 为什么没有变成单进程多线程的操作系统? 线程的状态 sleep () 和wait&…

1.4 操作系统结构

操作系统的体系结构:操作系统的内核设计(本节内容简要了解即可) 宏内核 & 微内核 操作系统的内核 计算机系统的层次结构将操作系统部分更详细地划分为内核部分和非内核部分 宏内核 & 微内核 从操作系统的内核架构来划分&#xff…

【初阶数据结构篇】时间(空间)复杂度

文章目录 算法复杂度时间复杂度1. 定义2. 表示方法3. 常见时间复杂度4.案例计算分析冒泡排序二分查找斐波那契数列(递归法)斐波那契数列(迭代法) 空间复杂度案例分析冒泡排序斐波那契数列(递归法)斐波那契数…

【ACM独立出版,高录用】第四届物联网与机器学习国际学术会议(IoTML 2024,8月23-25)

2024年第四届物联网与机器学习国际学术会议(IoTML 2024)将于2024年8月23-25日在中国南昌召开。 会议将围绕着物联网和机器学习开展,探讨本领域发展所面临的关键性挑战问题和研究方向,以期推动该领域理论、技术在高校和企业的发展和…

yolov8标注细胞、识别边缘、计算面积、灰度值计算

一、数据标注 1. 使用labelme软件标注每个细胞的边界信息,标注结果为JSON格式 2. JSON格式转yolo支持的txt格式 import json import os import glob import os.path as osp此函数用来将labelme软件标注好的数据集转换为yolov5_7.0sege中使用的数据集:param jsonfi…

数据库技术深度解析与未来趋势展望

数据库技术深度解析与未来趋势展望 引言 在当今信息化高速发展的时代,数据库作为数据存储和管理的核心基础设施,扮演着至关重要的角色。无论是传统行业还是新兴的互联网领域,数据库的稳定性和性能直接影响到业务系统的运行效率和用户体验。本…

计算机基础-IO

一、裸机中的IO 我们先看下计算机的组成部分: 从图中我们很清楚的看到Input/Output 即为 IO,也就是计算机主机和外部设备进行信息的交换。 这种交换可能是磁盘IO也有可能是网络IO。 二、操作系统中的IO 操作系统分为内核态和用户态,且默认…

GPT-4o mini 震撼登场:开发者的新机遇与挑战

GPT-4o mini 震撼登场:开发者的新机遇与挑战 一、引言二、GPT-4o mini 模型的卓越性能三、极具竞争力的价格优势四、开发者的探索与实践五、提升开发效率和创新能力的策略六、面临的挑战与应对措施七、未来展望八、总结 在科技的浪潮中,OpenAI 最新推出的…

基于springboot+vue+uniapp的网上花店小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

概率论--置信区间和置信度

目录 置信区间 置信度 关系与权衡 置信区间的计算公式有哪些不同的变体,以及它们各自的适用情况是什么? 基于正态分布的置信区间: 基于t分布的置信区间: 单边置信区间: 如何根据不同的研究目的和数据类型选择合…

【React】详解自定义 Hook

文章目录 一、自定义 Hook 的基本用法1. 什么是自定义 Hook?2. 创建自定义 Hook3. 使用自定义 Hook 二、自定义 Hook 的进阶应用1. 处理副作用2. 组合多个 Hook3. 参数化 Hook4. 条件逻辑 三、自定义 Hook 的实际应用案例1. 实现用户身份验证2. 实现媒体查询 四、最…

【NPU 系列专栏 2.5 -- GPU 与 NPU 的区别】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 GPU 简介GPU 缺点NPU 特点NPU 应用场景NPU 与 GPU 的关系和区别NPU 与 GPU 区别GPU 简介 GPU 最初设计用于图形渲染和图像处理。近年来,由于其强大的并行计算能力,GPU 被广泛应用于通用计算领域,特别是深度学习和科学计算。…

堆的实现-适用于算法竞赛

首先讲一下能够实现的操作。 插入一个数查找最小值删除最小值删除任意一个元素修改任意一个元素 什么是堆? 堆其实是一棵完全二叉树。 即处理叶子节点和倒数第一层节点,其他节点都有两个子节点,而且顺序是从上到下,从左到右。 …

C# 简单的单元测试

文章目录 前言参考文档新建控制台项目新建测试项目添加引用添加测试方法测试结果(有错误)测试结果,通过正规的方法抛出异常 总结 前言 听说复杂的项目最好都要单元测试一下。我这里也试试单元测试这个功能。到时候调试起来也方便。 参考文档 C# 单元测试&#xf…

JavaFX布局-TilePane

JavaFX布局-TilePane 常用属性alignmenttileAlignmentorientationhgapvgappadding 实现方式Javafxml 自动排列其子节点成网格状根据容器的大小以及子节点的数量和大小自动计算最佳的排列方式推荐子节点固定大小,参差不齐的子节点,效果很诡异 常用属性 …

【VS2019安装+QT配置】

【VS2019安装QT配置】 1. 前言2. 下载visual studio20193. visual studio2019安装4. 环境配置4.1 系统环境变量配置4.2 qt插件开发 5. Visual Studio导入QT项目6. 总结 1. 前言 前期安装了qt,发现creator编辑器并不好用,一点都不时髦。在李大师的指导下&…