java项目的构建工具-Maven

news2024/12/25 0:45:14

黑马程序员JavaWeb开发教程

文章目录

  • 一、概述
    • 1、介绍
      • (1)介绍
      • (2)Maven的作用
      • (3)官网
      • (4)仓库
    • 2、安装
  • 二、IDEA 集成 Maven
    • 1、配置Maven环境
    • 2、创建Maven项目
      • (1)Maven坐标
    • 3、导入Maven项目
      • (1)方式一
      • (2)方式二
  • 三、 依赖管理
    • 1、 依赖配置
    • 2、依赖传递
    • 3、依赖范围
    • 4、生命周期

一、概述

1、介绍

(1)介绍

  • Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建

(2)Maven的作用

  1. 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
  • 只需要在 pom.xml 中配置即可
  1. 统一项目结构:提供标准统一的项目结构

    在这里插入图片描述

  2. 项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式

(3)官网

  • http://maven.apache.org/

(4)仓库

  • 用于存储资源,管理各种jar包
    • 本地仓库:自己计算机上的一个目录
    • 中央仓库:有Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
    • 远程仓库(私服):一般由公司团队搭建的私有仓库

2、安装

  • Maven安装教程

二、IDEA 集成 Maven

1、配置Maven环境

  1. 全局参数的配置(如果仅配置当前工程的话,那么美创建一个新的项目就要重新配置一次)
  2. IDEA配置Maven环境

2、创建Maven项目

  • IDEA 创建Maven项目
  • 此时可能会遇到报红,可以尝试以下方法
    • 按照“IDEA配置Maven环境”的步骤重新检查一下,各种配置是否正确

    • 每次报错之后先回到本地仓库中搜索带有.lastUpdate后缀的文件全选,删除,之后再回到IDEA中重新刷新Maven项目(点击右侧工具栏中的maven,点击刷新图标)

      在这里插入图片描述

    • 除了原本的镜像尝试以下镜像,在配置文件settings.xml的mirrors 标签中填入(使用其中一个的时候,可以把另一个先注释)

      • 镜像一
<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>http://repo1.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
    <id>repo2</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
    <id>ibiblio</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
    <id>jboss-public-repository-group</id>
    <mirrorOf>central</mirrorOf>
    <name>JBoss Public Repository Group</name>
    <url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
    <id>google-maven-central</id>
    <name>Google Maven Central</name>
    <url>https://maven-central.storage.googleapis.com
    </url>
    <mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像  -->
<mirror>
    <id>maven.net.cn</id>
    <name>oneof the central mirrors in china</name>
    <url>http://maven.net.cn/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

镜像二

<mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror> 

(1)Maven坐标

  1. 什么是坐标
  • Maven中的坐标是资源的唯一表示,通过该坐标可以唯一定位资源位置
  • 使用坐标来定义项目或引入项目中需要的依赖
  1. Maven坐标主要组成
  • gruopid:定义当前Maven项目隶属组织名称(通常是域名反写)
  • artifactId:定义当前Maven项目名称(通常是模块名称)
  • version:定义当前项目版本号
    在这里插入图片描述

3、导入Maven项目

(1)方式一

  • 打开IDEA,选择右侧maven面板,点+号,选中对应项目的pom.xml文件,双击即可

    在这里插入图片描述

    • 如果没有看到相关的面板,view,Apperance,Tool Window Bars 调出来
      在这里插入图片描述

(2)方式二

  • File ,Project Structure,Moudles, import Module, Modules, pom.xml

    在这里插入图片描述

  • 从IDEA中移除Maven项目:项目右键,Remove Module

    在这里插入图片描述

三、 依赖管理

1、 依赖配置

  1. 依赖:值当前项目运行所需要的jar包,一个项目中可以引入多个依赖
  2. 配置
  • 在 pom.xml 中编写<dependencies>标签
  • <dependencies> 标签中使用<dependency> 引入坐标
  • 定义坐标的 groupId,artifactId,version
  • 点击刷新按钮,引入最新加入的坐标
  1. 注意事项
  • 如果引入依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖(这个过程会比较耗时,耐心等待)
  • 如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索。

2、依赖传递

  1. 依赖具有传递性
  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目简介依赖其他资源
  1. 排除依赖:排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
<exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
  </exclusions>

3、依赖范围

  • 依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope></scope>设置其作用范围。
  • 作用范围
    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包运行(package指令范围内)
<dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
            <scope>test</scope>
        </dependency>

在这里插入图片描述

4、生命周期

  1. Maven的生命周期就是为了对所有的Maven项目构建过程进行抽象和统一
  2. Maven中有三套,相互独立的生命周期:
  • clean:清理工作
  • default:核心工作,如:编译、测试、打包、安装、部署等
  • site:生成报告、发布站点等(不常用)
  1. 每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
    在这里插入图片描述
  2. 常见的生命周期阶段
  • clean:移除上一次构建生成的文件
  • compile:编译项目源代码
  • test:使用合适的单元测试框架运行测试(junit)
  • package:将编译后的文件打包,如jar、war等
  • install:安装项目到本地仓库
  1. 注意事项
  • 在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行
  1. 常用的几个阶段在maven面板中都有
    在这里插入图片描述
  2. 执行指定生命周期的两种方式
  • 在idea中,右侧maven工具栏,选中对应的生命周期,双击执行。
  • 在命令行中,通过命令执行(例如:mvn compile)

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

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

相关文章

java 红黑树

01.红黑树的定义&#xff1a; 每一个结点有五个属性&#xff1a;

Jmeter测试学习笔记

第一章 jmeter基础知识 一.Jmeter工具中的组件 1.测试计划&#xff1a;Jmeter测试的起点。容器。 2.线程组&#xff1a;代表一定的用户 3.取样器&#xff1a;发送请求的最小单元 4.逻辑控制器&#xff1a;处理请求逻辑 5.前置处理器&#xff1a;请求之前的操作 6.后置处…

docker部署的nginx配置ssl证书https

申请ssl证书&#xff0c;已腾讯的免费证书为例 2.上传证书到linux服务器 2.1 映射ssql目录 首先确保容器命令已映射宿主机目录&#xff0c;不一定是ssl&#xff0c;也可以是其他路径。 2.2 上传文件到指定路径 以我映射的ssl路径为例&#xff0c;我上传到宿主机的 /usr/local…

字母加密(C语言)

一、题目&#xff1b; 为使电文保密&#xff0c;往往按一定规律将其转换成密码&#xff0c;收报人再按约定的规律将其译回原文。例如&#xff0c;可以按以下规律将电文变成密码&#xff1a;将字母A变成字母E&#xff0c;a变成e&#xff0c;即变成其后的第4个字母&#xff0c;W…

【Shell语言】linux中awk命令

linux中awk命令 看这里放声嘶吼谁也不舍得沉默 宽阔也抓不住我下一秒钟的echo ——《暂时失控》苏打绿 awk命令简介 AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 B…

密码学 | 数字签名 + 数字证书

&#x1f951;原文&#xff1a;数字签名和数字证书的原理解读 - 知乎 &#x1f951;声明&#xff1a;后文图中若未明确指明&#xff0c;默认是 Bob 的公钥或私钥。 Step1&#xff1a;Bob 有两把钥匙&#xff0c;一把是公钥&#xff0c;另一把是私钥。 Step2&#xff1a;Bob 把…

Redis中的BigKey

Redis中的BigKey 文章目录 Redis中的BigKey什么是BigKey&#xff1f;BigKey的危害找到Bigkey删除BigKey优化BigKeyBigKey对持久化的影响对AOF日志的影响对AOF重写和RDB的影响 什么是BigKey&#xff1f; 大 key 并不是指 key 的值很大&#xff0c;而是 key 对应的 value 很大。…

Docker操作容器打包(commit),压缩(save),挂载(load)

文章目录 前言一、容器打包二、将镜像压缩成tar包三、将tar包挂载为镜像结束 前言 将容器打包成镜像时&#xff0c;你正在将应用程序及其所有依赖项、文件和配置文件捆绑到一个可移植的、独立的单元中。这样做可以确保您的应用程序在不同环境中具有一致的运行方式&#xff0c;…

使用自己训练好的模型YOLOv8进行X-AnyLabeling自动标注

目录 1. 下载项目2. 创建环境3. 运行程序3.1 自行下载和添加官方模型3.2 使用自己训练好的模型标注自己的数据集 本机环境&#xff1a;win 10&#xff0c; GPU 1. 下载项目 git clone https://github.com/CVHub520/X-AnyLabeling.git2. 创建环境 仔细查看项目的README文件 …

FastGPT+ChatGLM3本地部署

FastGPTChatGLM本地部署 本地部署硬性要求&#xff1a;显存13g以上 关于环境的安装就不多赘述&#xff0c;conda pip 可以解决大部分问题 ChatGLM本地运行 m3e-basechatglm3-6b 在huggingface上可以下载上述模型&#xff0c;如果没有梯子可以使用huggingface镜像 从git…

Linux shell 脚本基础与部署SpringCloud实战

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

Java学习笔记零基础入门1

目录 第一章 Java概述 1.1 什么是程序 1.2 Java 技术体系平台 1.3 Java 重要特点 1.4 Java 的开发工具 4.1 工具选择 1.5 Java 运行机制及运行过程 5.1 Java 语言的特点&#xff1a;跨平台性 5.2 Java 核心机制-Java 虚拟机 [JVMjavavirtual machine] 1.6 什么是JDK&…

C++ PTA 天梯赛 L1-003 个位数统计 L1-005 考试座位号 【范围for循环】【. 与 -> 访问成员】

L1-003 个位数统计 最后一个测试点考察的是当N特别大时&#xff0c;如果用整数存会数据溢出&#xff0c;改成字符串可以增大范围 知识点&#xff1a; 1.范围 for 循环&#xff0c;它对于遍历容器&#xff08;比如字符串&#xff09;中的元素非常方便。在这里&#xff0c;N 是…

JavaEE初阶Day 10:多线程(8)

目录 Day 10&#xff1a;多线程&#xff08;8&#xff09;单例模式阻塞队列1. 生产者消费者模型1.1 生产者消费者模型解耦合1.2 生产者消费者模型削峰填谷 2. 生产者消费者代码3. 阻塞队列实现 Day 10&#xff1a;多线程&#xff08;8&#xff09; 单例模式 单例模式&#xf…

2024经常用且免费的10个网盘对比,看看哪个比较好用!

网盘在我们的工作和学习中经常会用到&#xff0c;也是存储资料的必备工具&#xff0c;有了它&#xff0c;我们就不用走到哪都带着移动硬盘了&#xff0c;而目前市场上的主流网盘还有数十款&#xff0c;其中有免费的也有付费的&#xff0c;各家不一&#xff0c;今天小编就来为您…

嵌入式操作系统FreeRTOS(队列管理)

1.队列管理 &#xff08;1&#xff09;数据存储 队列可以保存有限个具有确定长度的数据单元。队列可以保存的最大单元数目被称为队列的“深度”。在队列创建时需要设定其深度和每个单元的大小。通常情况下&#xff0c;队列被作为FIFO (先进先出)使用&#xff0c;即数据由队列尾…

Win10安装DeepSpeed 实测成功

I. 完整流程 按照DeepSpeed要求步骤安装&#xff0c;即 Windows Windows support is partially supported with DeepSpeed. On Windows you can build wheel with following steps, currently only inference mode is supported. Install pytorch, such as pytorch 1.8 cu…

Tomcat和Spring Boot配置https

生成测试证书 生成证书前&#xff0c;先验证本地是否正确配置jdk环境变量&#xff0c;如果jdk环境变量配置正确&#xff0c;在命令行程序输入生成证书的命令。 keytool -genkey -alias tomcat -keyalg RSA -keystore "F:\job\apache-tomcat-8.5.29\key\freeHttps.keysto…

goland2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Goland 是一款由 JetBrains 公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于 Go 语言的开发。它提供了丰富的功能和工具&#xff0c;帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…

OpenHarmony实战开发-如何实现进入页面,点击动画卡片,动画播放并且文本发生变化。

介绍 Lottie是一个适用于OpenHarmony的动画库&#xff0c;它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画&#xff0c;并在移动设备上进行本地渲染&#xff0c; 可以在各种屏幕尺寸和分辨率上呈现&#xff0c;并且支持动画的交互性&#xff0c;通过…