Maven 快速入门

Maven

简介

  • Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。

依赖管理

  • 方便快捷的管理项目的依赖资源(jar包),避免版本冲突

配置

  • 依赖: 指当前项目运行所需要的(jar包)

    • 在pom.xml 中编写<dependencies> 标签

    • 在<dependencies> 标签 使用<dependency>引入坐标

    • GroupId(组ID)

    • ArtifactId(工件ID)

    • Version(版本号)

<!-- 这是Maven项目中的dependencies标签,用于定义项目的所有依赖关系 -->
<dependencies>
    <!-- 下面定义了一个具体的依赖项 -->
    <dependency>
        
        <!-- groupId定义了依赖的组织或团体,这里是阿里巴巴集团 -->
        <groupId>com.alibaba</groupId>
        
        <!-- artifactId定义了具体的构件或库名,这里是Druid针对Spring Boot的启动器 -->
        <artifactId>druid-spring-boot-starter</artifactId>
        
        <!-- version指定了该依赖的版本号,使用的是1.2.4 -->
        <version>1.2.4</version>
    </dependency>
    
    <!-- dependencies标签结束,所有项目的依赖关系定义完毕 -->
</dependencies>

统一项目结构

  • 提供标准统一的项目结构

项目构建

  • 标准跨平台(Linux, Windows, MacOS)的自动化项目构建方式

  • 清理 编译 测试 打包 发布

####

向已有项目添加maven模块

文件 -> 新建 -> 新模块

新建maven项目

导入maven项目

方式1

方式2

安装

  1. 官网下载--安装

  2. 配置本地仓库 :修改 conf/settings.xml 配置文件 中的 <localRepository>

    <localRepository>"本地仓库位置"</localRepository>
    <!-- 大概在55 行左右-->

  3. 建议配置 阿里云私服 :修改conf/setting.xml文件 中的<mirrors>

    <mirrors>
        <!--在这个标签中添加一下代码 -->
        
    <!-- 阿里云仓库 -->
        <mirror>
          <id>alimaven</id>
          <mirrorOf>central</mirrorOf>
          <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
         </mirror>
    ​
        
    </mirrors>

Maven坐标

Maven坐标系统是Apache Maven构建工具用于唯一标识项目及其依赖的重要概念。这一系统确保了项目构建过程中的依赖解析、项目部署等操作能够准确无误地进行。

坐标组成

  • GroupId(组ID):这是项目组织的唯一标识符,通常采用倒置的域名表示,如com.example。它定义了项目的归属,有助于区分不同组织或个人的项目。

  • ArtifactId(工件ID):代表实际项目或依赖库的名称,是Maven项目的基本命名。例如,一个项目名为my-project,则其artifactId即为my-project

  • Version(版本号):指定项目的特定版本,如1.0.0。版本号对于管理项目依赖的升级、兼容性检查至关重要。

作用

  • 唯一标识:Maven坐标为每个项目或依赖库提供了一个全球唯一的地址,确保了在大型项目或依赖网络中能够精确地定位资源。

  • 依赖管理:基于坐标,Maven能自动下载和管理项目所需的全部依赖,简化了构建过程。

  • 仓库定位:坐标也是Maven在本地仓库、远程仓库中查找和存储项目构件或依赖的标准路径。

实例

<!-- 这是Maven项目中的dependencies标签,用于定义项目的所有依赖关系 -->
<dependencies>
    <!-- 下面定义了一个具体的依赖项 -->
    <dependency>
        
        <!-- groupId定义了依赖的组织或团体,这里是阿里巴巴集团 -->
        <groupId>com.alibaba</groupId>
        
        <!-- artifactId定义了具体的构件或库名,这里是Druid针对Spring Boot的启动器 -->
        <artifactId>druid-spring-boot-starter</artifactId>
        
        <!-- version指定了该依赖的版本号,使用的是1.2.4 -->
        <version>1.2.4</version>
    </dependency>
    
    <!-- dependencies标签结束,所有项目的依赖关系定义完毕 -->
</dependencies>

依赖传递

  • 直接依赖: 当前项目中通过配置建立的依赖关系

  • 间接依赖: 直接依赖的资源,也依赖了其他资源,那么当前项目也间接的依赖了这个资源

排除依赖

  • 主动断开某间接依赖,被断开的资源无须指定版本

    <!-- 在Maven的依赖声明中,这是一个特定的依赖项配置 -->
    <dependency>
        <!-- groupId: 定义了依赖的组织或公司名称,xx_0 是一个占位符,实际使用时应替换为具体的组织ID -->
        <groupId>xx_0</groupId>
        
        <!-- artifactId: 指定了依赖库或模块的名称,xx_1 同样是占位符,应替换为实际的库名 -->
        <artifactId>xx_1</artifactId>
        
        <!-- version: 表明该依赖的具体版本号,xx_2 需要替换为实际版本字符串 -->
        <version>xx_2</version>
    ​
        <!-- exclusions 标签用于排除传递性依赖,即不希望引入某些由当前依赖自动带来的其他依赖 -->
        <exclusions>
            <!-- 在此标签内,可以定义一个或多个exclusion子标签来排除特定的依赖 -->
            <exclusion>
                <!-- 被排除依赖的groupId -->
                <groupId>xx</groupId>
                
                <!-- 被排除依赖的artifactId -->
                <artifactId>xx</artifactId>
            </exclusion>
            <!-- 如果有其他依赖需要排除,可以继续添加exclusion标签 -->
        </exclusions>
    </dependency>

依赖范围

  • 靠<scope>标签来指定范围

范围(Scope)主程序(Main)测试程序(Test)打包(Package)范例
compile(编译范围 默认)log4j
test(测试范围)junit
provided(已提供范围)servlet-api
runtime(运行时范围)jdbc驱动
<!-- 这是Maven项目中的dependencies标签,用于定义项目的所有依赖关系 -->
<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.4</version>
        <scope>test</scope> <!-- 设置了依赖的范围为test范围 --> 
    </dependency>
​
</dependencies>
 

三套独立生命周期

当执行某个阶段时会执行所有在它前面的阶段

clean: 清理工作

clean生命周期负责清理项目,即删除之前构建生成的文件。它确保下一次构建从干净的状态开始。clean生命周期包含以下阶段:

  • pre-clean: 执行一些清理前的准备工作。

  • clean: 清理上一次构建生成的文件。 ------常用

  • post-clean: 执行一些清理后的收尾工作。

default: 核心工作

default生命周期是Maven的核心生命周期,负责项目的编译、测试、打包等。这是实际构建项目的生命周期,包含了许多阶段,例如:

  • validate: 验证项目是否正确,所有必要的信息都是可用的。

  • compile: 编译项目的源代码。 ------常用

  • test: 使用适当的单元测试框架运行测试,这些测试不应要求代码被打包或部署。------常用

  • package: 打包编译后的代码,在打包之前,通常会进行一些预处理操作,如编译和测试。------常用

  • verify: 对集成测试的结果进行检查,以确保质量达标。

  • install: 将包安装到本地仓库,以供其他项目使用。------常用

  • deploy: 在构建环境中完成,将最终的包复制到远程仓库以共享给其他开发者和项目。

site: 生成报告

site生命周期负责生成项目的站点文档,包括项目信息、报告和维基页面等。site生命周期包含以下阶段:

  • pre-site: 在生成项目站点之前执行一些准备工作。

  • site: 生成项目的站点文档。

  • post-site: 执行一些生成站点后的收尾工作。

  • site-deploy: 将生成的站点发布到服务器上。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

选择制造业生产管理系统指南

在当今日益激烈的市场竞争中&#xff0c;制造业企业要想保持领先地位&#xff0c;就必须拥有一套高效、智能的生产管理系统。选择一套合适的制造业生产管理系统&#xff0c;不仅能帮助企业优化生产流程、提高生产效率&#xff0c;还能降低生产成本、提升产品质量。 一、发现制…

2024/06/13--代码随想录算法3/17|01背包问题 二维、01背包问题 一维、416. 分割等和子集

01背包问题 二维 卡码网链接 动态规划5步曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][j] &#xff1a;从下标为[0,i-1]个物品中任取&#xff0c;放进容量为j的背包&#xff0c;价值总和最大为多少。确定递推公式&#xff0c; 有两个方向可…

简单操作,智能自动化:Windows键鼠模拟软件

一个 Windows 自动化工具&#xff0c;可模拟键盘和鼠标&#xff0c;自动执行任何流程和动作&#xff0c;只需录制动作并运行即可&#xff0c;无需编写脚本&#xff0c;只需按录制&#xff0c;然后播放即可&#xff0c;大小仅 35 KB&#xff0c;且免费无广告。 界面介绍 **打开…

pyside6在QLabel上显示图像文件

猫咪的图片&#xff1a;370*280像素 基本的代码&#xff1a; from PySide6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout from PySide6.QtGui import QPixmap, Qtapp QApplication([])widget QWidget() layout QVBoxLayout(widget)label QLabel() label.…

【高校科研前沿】北京大学赵鹏军教授团队在Nature Communications发文:揭示城市人群移动的空间方向性

文章简介 论文名称&#xff1a;Unravelling the spatial directionality of urban mobility 第一作者及单位&#xff1a;赵鹏军&#xff08;教授|第一作者|北京大学&#xff09;&王浩&#xff08;博士生|共同一作|北京大学&#xff09;; 通讯作者及单位&#xff1a;赵鹏军…

计算机网络 —— 运输层(TCP三次握手)

计算机网络 —— 运输层&#xff08;TCP三次握手&#xff09; 三次握手第一次握手第二次握手第三次握手两次握手行不行&#xff1f; 我们今天来学习TCP的三次握手&#xff1a; 三次握手 TCP三次握手是TCP协议中建立连接的过程&#xff0c;旨在确保双方准备好进行可靠的通信。…

JavaScript之函数

函数 使用 声明语法&#xff1a; function 函数名() {函数体 }命名规范&#xff1a; 小驼峰命名法前缀用动词 前缀词&#xff1a; 调用 函数名()函数传参 为了提高函数的灵活性 声明语法&#xff1a; function 函数名(参数列表) {函数体 }调用 函数名(参数)在函数声…

登录/注册- 滑动拼图验证码(IOS/Swift)

本章介绍如何使用ios开发出滑动拼图验证码&#xff0c;分别OC代码和swift代码调用 1.导入项目model文件OC代码&#xff08;下载完整Demo&#xff09; 2.放入你需要显示的图片 一&#xff1a;OC调用 #import "ViewController.h" #import "CodeView.h"…

强大高效,推荐这两款分析文章和抠图的AI工具

ChatDOC ChatDOC是一款基于ChatGPT的AI阅读辅助工具&#xff0c;旨在通过与用户指定的文档进行对话来处理用户的专属数据。它能够帮助用户快速提取文档中的信息&#xff0c;支持多种文件格式&#xff0c;并提供准确的答案。此外&#xff0c;ChatDOC还具备智能格式化、自动摘要生…

使用QT制作QQ登录界面

mywidget.cpp #include "mywidget.h"Mywidget::Mywidget(QWidget *parent): QWidget(parent) {/********制作一个QQ登录界面*********************/this->resize(535,415);//设置登录窗口大小this->setFixedSize(535,415);//固定窗口大小this->setWindowTi…

交换机简介

一、 集线器的替代品—交换机 使用集线器的缺点&#xff0c;因此就设计出了交换机来代替集线器&#xff0c;交换机常见端口数量一般有4、8、16、24、32等数量。 华为交换机&#xff1a;S5720-HI系列 仅从实物图上来看&#xff0c;交换机和集线器非常的像&#xff0c;但是它们的…

【python】通行网格地图四叉树化 (leeccode 427)

【python】通行网格地图四叉树化 受到Leecode 427题的启发&#xff0c;427. 建立四叉树 想将由0和1组成的网格地图绘制为四叉树地图&#xff0c;0表示可通行网格&#xff0c;1表示不可通行网格。 import matplotlib.pyplot as plt import matplotlib.patches as patches …

【ARM Cache 与 MMU/MPU 系列文章 1.2 -- Data Cache 和 Unified Cache 的区别是什么?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Data Cache and Unified Cache数据缓存 (Data Cache)统一缓存 (Unified Cache)数据缓存与统一缓存的比较小结 Data Cache and Unified Cache 在 ARM架构中&#xff0c;缓存&#xff08…

第3章 Unity 3D着色器系统

3.1 从一个外观着色器程序谈起 新建名为basic_diffuse.shader的文件&#xff0c;被一个名为basic_diffuse.mat的材质文件所引用&#xff0c;而basic_diffuse.mat文件则被场景中名为Sphere的game object的MeshRenderer组件所使用。 basic_diffuse.shader代码文件的内容如下所示…

15.RedHat认证-Ansible自动化运维(上)

15.RedHat认证-Ansible自动化运维(上) RHCE8-RH294 Ansible自动化&#xff08;Ansible版本是2.8.2&#xff09; Ansible介绍 1.Ansible是什么&#xff1f; Ansible是一个简单的强大的无代理的自动化运维工具&#xff08;Ansible是自动化运维工具&#xff09;Ansible特点 简…

Java——LinkedList

1、链表 1.1 链表的概念及结构 链表在逻辑层面上是连续的&#xff0c;在物理层面上不一定是连续的 链表结构可分为&#xff0c;单向或双向、带头或不带头、循环或非循环&#xff0c;组合共计8种 重点&#xff1a;无头单向非循环链表、无头双向链表 1.2 模拟实现无头单向非…

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 探测效果(地图探测、地图窥探)

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 探测效果&#xff08;地图探测、地图窥探&#xff09; 实现原理 ArcGIS Maps SDK for JavaScript 从 4.29 开始增加 RenderNode 类&#xff0c;可以添加数据以及操作 FBO&#xff08;ManagedFBO&#xff09;&#xf…

影响数字本振信噪比的因素

2048 点 -66 4096 点-72 8192 点-77 16384 点-84

弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门

Docker技术概论 在WSL2中玩转Docker之Docker Engine部署 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://bl…

Java开发规范

1.接口命名规范–Restful API 原本格式是动词资源by传参&#xff0c;后来进化为Restful API&#xff0c;思想是以资源为中心。 动词用get,post,put,delete请求方法代替&#xff0c;by后面的名词用传参代替。 并且GET方法传参资源ID采用路径传参&#xff0c;除了资源ID外的GET…