java项目的构建工具-Maven

黑马程序员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.mzph.cn/diannao/230.shtml

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

相关文章

入门必备:MySQL本地安装(Windows11)

下载安装 社区版下载地址:https://dev.mysql.com/downloads/ 选择合适自己操作系统的版本&#xff1a; 下载完成后是一个.msi文件&#xff0c;双击安装即可&#xff1b; 接下来请看图&#xff1a; 上面的步骤完成后&#xff0c;大概会弹出黑窗口并且有下面的UI界面&#xff…

Simlab python二次开发1-将所有缸套内表面半径加大1mm

Simlab python二次开发1-将所有缸套内表面半径加大1mm 1、打开模型文件2、getBodiesWithSubString&#xff08;&#xff09;从名字得到Bodies3、建Body类Group3.1、定义放入Group中的Bodies3.2、建Group 4、将缸套内表面建组&#xff0c;并扩半径1mm4.1、simlab.getBodiesFromG…

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

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

基于Springboot+Vue的Java项目-企业客户管理系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

00_Linux

文章目录 LinuxLinux操作系统的组成Linux的文件系统Linux操作系统中的文件类型Linux操作系统的组织结构 Linux vs WindowsNAT vs 桥接模式 vs 仅主机Linux Shell命令Linux⽂件与⽬录管理相关指令目录文件普通文件文本编辑 用户管理添加用户删除用户用户组管理 文件权限管理权限…

[生活][杂项] 上班党的注意事项

前言 目前是上班已经接近两年了&#xff0c;目前的状态是&#xff0c;一个人租了一个单间在上班。对于这种情况有以下几点需要注意。 钥匙问题&#xff0c;一定不要陷入钥匙丢失的情况&#xff01;一定不要陷入钥匙丢失的情况&#xff01;一定不要陷入钥匙丢失的情况&#xff…

共享电动车哪家强?人民出行共享电动车绿色出行

在当下这个快节奏、高压力的生活环境中,人们越来越注重出行的便捷性和环保性。共享电动车以其灵活方便、绿色低碳的特性,受到了越来越多人的青睐。那么,在众多的共享电动车品牌中,哪个牌子比较好呢?今天,就让我来为大家介绍一下人民出行共享电动车,它以其卓越的品质和贴心的服…

邮箱群组是什么?怎么创建邮箱群组?

在我们群发邮件时&#xff0c;可能会遇到这样的状况&#xff0c;一个个输入邮箱地址效率很低&#xff0c;而且很容易就漏发。而对于一个企业来说&#xff0c;如果出现这样的问题&#xff0c;很有可能会影响公司的业务进展和团队协作。这个时候我们就需要邮箱群组这个功能&#…

【Java】导出Mysql表表结构与注释数据字典

需求&#xff1a; 把mysql中所有表的字段名、数据类型、长度、注释整理成csv&#xff0c;做成数据字典。 import java.io.IOException; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import ja…

聊聊binlog是什么

1. 上一讲思考題解答:redo日志刷盘策略的选择建议 先给大家解释一下上一讲的思考題&#xff0c;我给大家的一个建议&#xff0c;其实对于redo日志的三种刷盘策略&#xff0c;我们通常建议是设置为1 也就是说&#xff0c;提交事务的时候&#xff0c;redo日志必须是刷入磁盘文件…

AWB学习记录

主要参考食鱼者博客&#xff1a;https://blog.csdn.net/wtzhu_13/article/details/119301096&#xff0c;以及相关的论文&#xff0c;感谢食鱼者老师整理分享。 灰度世界和完全反射 灰度世界法和完全反射法分别是基于(Rmean, Gmean, Bmean)和(Rmax, Gmax, Bmax)来进行白平衡校…

Leetcode 76. 最小覆盖子串和Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 Leetcode 76. 最小覆盖子串题目描述C语言题解和思路解题思路 Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置题目描述C语言题解和思路解题思路 Leetcode 76. 最小覆盖子串 题目描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子…

多任务学习的显著优势!

多任务学习是一种机器学习技术&#xff0c;它允许模型同时学习多个相关任务。与不进行多任务的整体学习&#xff08;单任务学习&#xff09;相比&#xff0c;多任务学习具有多个显著优势。 首先&#xff0c;多任务学习可以提高学习效率和速度。在并行学习中&#xff0c;多个任…

数组和指针的联系(C语言)

数组和指针是两种不同的数据类型&#xff0c;数组是一种构造类型&#xff0c;用于存储一组相同类型的变量&#xff1b;而指针是一种特殊类型&#xff0c;专门用来存放数据的地址。数组名除了sizeof(数组名)和&数组名表示整个数组外&#xff0c;其他情况下都表示的是首元素的…

profinet协议基础

文章目录 工业以太网自动化通讯金字塔工业以太网技术比较 profinet概述profinet特性 EtherNet通信EtherCAT通信EtherCat特性EtherCat过程同步 工业以太网 工业以太网是基于IEEE 802.3 (Ethernet)的强大的区域和单元网络。 自动化通讯金字塔 各个组织与工业以太网 工业以太网…

水气表CJ/T188协议学习及实例

水气表CJ/T188协议学习及实例 1 CT/J 188协议简介 CJ/T188协议规定了户用计量仪表(以下简称仪表)&#xff0c;包括水表、燃气表、热量表等仪表数据传输的基本原则&#xff0c;接口形式及物理性能、数据链路、数据标识及数据安全性和数据表达格式的要求。 CJ/T188协议为主-从…

DP10RF001一款工作于200MHz~960MHz低功耗、高性能、单片集成的(G)FSK/OOK无线收发芯片

产品概述. DP10RF001是一款工作于200MHz~960MHz范围内的低功耗、高性能、单片集成的(G)FSK/OOK无线收发机芯片。内部集成完整的射频接收机、射频发射机、频率综合器、调制解调器&#xff0c;只需配备简单、低成本的外围器件就可以获得良好的收发性能。芯片支持灵活可设的数据包…

Node.js安装与配置

Node.js是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;可以让你用JavaScript编写服务器端代码。在本文中&#xff0c;我将向大家介绍如何安装和配置Node.js。 首先&#xff0c;你需要前往Node.js官方网站&#xff08;https://nodejs.org/&#xff09;下载最新版本的…

DDD 领域驱动设计 - Domain Primitive(Kotlin 落地实现)

本文部分借鉴了阿里技术专家的 DDD 系列文章&#xff0c;笔者只是在学习 DDD 的过程中记录自己想法、思考. Ps&#xff1a;为了便于理解&#xff0c;笔者改动了部分案例&#xff0c;语言也换成 Kotlin 文章目录 为什么出现 DDD&#xff1f;Domain Primitive&#xff08;DP&…

C#中检查一个矩阵是否可逆

在C#中&#xff0c;要检查一个矩阵是否可逆&#xff08;即是否是满秩的&#xff0c;或者说是否有逆矩阵&#xff09;&#xff0c;以及计算它的逆矩阵&#xff0c;你可以使用数学库&#xff0c;比如Math.NET Numerics。这个库提供了强大的数学和统计功能&#xff0c;包括线性代数…