Java | Maven(知识点查询)

文章目录

    • Maven知识速查
      • 1. Maven概述
      • 2. Maven的作用
      • 3. Maven的下载
      • 4. Maven的环境配置
      • 5. Maven 的基础组成
        • 5.1 Maven仓库
          • 5.1.1 本地仓库配置:
          • 5.1.2 中央仓库配置:
          • 5.1.3 镜像仓库配置
        • 5.2 Maven坐标
      • 6. Maven项目
        • 6.1 手工创建Maven项目
        • 6.2 自动构建项目
      • 7. Maven依赖管理
        • 7.1 依赖配置(版本规范)
        • 7.2 依赖传递
        • 7.3 可选依赖(不展示)
        • 7.4 排除依赖(不需要)
        • 7.5 依赖范围
        • 7.6 依赖范围传递
      • 8. Maven生命周期与插件
        • 8.1 Maven生命周期
        • 8.2 Maven插件


Maven知识速查

1. Maven概述

  • Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
  • POM(Project Object Model):项目对象模型
    在这里插入图片描述

2. Maven的作用

  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
  • 统一开发结构:提供标准的、统一的项目结构(如下图:

在这里插入图片描述

3. Maven的下载

  • 官网:http://maven.apache.org/
  • 下载地址:http://maven.apache.org/download.cgi

:IDEA新版的直接自带Maven版本,用自带的也比较好。不然配置繁琐。

4. Maven的环境配置

  1. 依赖 Java,需要配置 JAVA HOME
  2. 设置 MAVEN 自身的运行环境,需要配置 MAVEN_HOME
  3. 在Path中配置Maven的执行程序的路径(相信各位老道的 Java 选手已经会了)
  4. 测试环境配置结果

MVN

5. Maven 的基础组成

5.1 Maven仓库
  • 仓库:用于储存 Jar 包,供给 Java 项目使用。

  • 仓库分类

    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源

    • 远程仓库:非本机电脑上的仓库,为本地仓库提供资源

      • 中央仓库:Mavenl团队维护,存储所有资源的仓库(https://repo1.maven.org/maven2/)

      • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源

  • 私服的作用

    • 保存具有版权的资源,包含购买或自主研发的jar
      • 中央仓库中的jar都是开源的,不能存储具有版权的资源
    • 一定范围内共享资源,仅对内部开放,不对外共享

在这里插入图片描述

5.1.1 本地仓库配置:
Maven,启动后,会自动保存下载的资源到本地仓库
< --! 默认位置>
<localRepository>${user.home}/.m2/repository</localRepository>当前目录位置为登录用户名所在目录下的.m2文件夹中
<--! 自定义位置>
<localRepository>D:\maven\repository</localRepository>当前目录位置为D:maven repository.文件夹中
5.1.2 中央仓库配置:
  • 在路径:C:\Users\ljcg.m2\settings.xml 中修改配置
<repositories><repository><id>central</id><name>Central Repository</name><url>https://repo.maven.apache.org/maven2</url><layout>default</layout><snapshots><enabled>false</enabled></snapshots></repository>
</repositories>
5.1.3 镜像仓库配置
  • 在路径:C:\Users\ljcg.m2\settings.xml 中修改配置
<mirrors><!-- 配置具体的仓库的下载镜像 --><mirror><!-- 此镜像的唯一标识符,用来区分不同的nirror元素 --><id>nexus-aliyun</id><!-- 对哪种仓库进行镜像,简单说就是替代哪个仓库 --><mirrorOf>central</mirrorOf><!-- 镜像名称 --><name>Nexus aliyun</name><!-- 镜像URL --><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
</mirrors>
5.2 Maven坐标
  • 坐标:Mavent中的坐标用于描述仓库中资源的位置(https://repo1.maven.org/maven2/)
  • 坐标的组成

groupld(组织ID):定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)
artifactld(项目ID):定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)
version(版本号):定义当前项目版本号
packaging:定义该项目的打包方式

  • 坐标的作用:使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

6. Maven项目

6.1 手工创建Maven项目
  • Maven工程目录

在这里插入图片描述

  • 在src同层目录下创建pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>untitled</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>untitled</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies>
</project>
6.2 自动构建项目

在这里插入图片描述

  • Tomcat7运行插件:
<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>80</port><path>/</path></configuration></plugin></plugins>
</build>

7. Maven依赖管理

7.1 依赖配置(版本规范)
  • pom.xml 文件中安装所需要的依赖
  • 格式:
<!-- 设置当前项目所有依赖 -->
<dependencies><!-- 设置具体需要的依赖 --><dependency><!-- 依赖所属群组 --><groupId>junit</groupId><!-- 依赖所属项目 --><artifactId>junit</artifactId><!-- 依赖版本 --><version>4.12</version></dependency>
</dependencies><!-- 版本规范 -->
– SNAPSHOT:开发版本,表示该版本仍在开发中,可能会频繁改变。
– RELEASE:发布版本,表示该版本为稳定版本,很少改变。(非SNAPSHOT的就是RELEASE)
– ALPHA:内部测试版本,一般不供外部使用。
– BETA:公开测试版本,可供外部测试并提供反馈。
7.2 依赖传递
  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
  • 依赖传递冲突问题
    • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
    • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

在这里插入图片描述

7.3 可选依赖(不展示)
  • 可选依赖指对外隐藏当前所依赖的资源一一不透明
  • 格式:
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 隐藏配置 --><optional>true</optional>
</dependency>
7.4 排除依赖(不需要)
  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本一一不需要
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 依赖排出配置 --><exclusions><exclusion><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId></exclusion></exclusions>
</dependency>
7.5 依赖范围
  • 依赖的jar默认情况可以在任何地方使用,可以通过 scope 标签设定其作用范围
  • 格式:
<scope>compile</scope>
  • 作用范围:
    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包(package指令范围内)

在这里插入图片描述

7.6 依赖范围传递
  • 带有依赖范围的资源在进行传递时,作用范围将受到影响

在这里插入图片描述

8. Maven生命周期与插件

8.1 Maven生命周期
  • Maven构建生命周期描述的是一次构建过程经历经历了多少个事件

在这里插入图片描述

8.2 Maven插件
  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上绑定有预设的功能
  • 通过插件可以自定义其他功能
<!-- 自定义插件 -->
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><goals><!-- 可以多个构建包 web项目是:war--><goal>jar</goal><goal>test-jar</goal></goals><!-- 生命流程 --><phase>generate-test-resources</phase></execution></executions></plugin></plugins>
</build>

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

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

相关文章

【C++】map、set,multiset和multimap的使用及底层原理【完整版】

目录 一、map和set的使用 1、序列式容器和关联式容器 2、set的使用讲解 3、map的使用讲解 二、multiset和multimap 1、multiset和multimap的使用 2、OJ题&#xff1a;前k个高频单词 一、map和set的使用 1、序列式容器和关联式容器 序列式容器&#xff1a;vector/list/s…

【计算机网络】详解TCP协议(上) TCP协议头结构 | ACK确认应答 | 超时重传机制

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…

ubuntu apt工具软件操作

apt工具 -----> 网关 国内网络(仓库源) 美国网络(仓库源)/etc/apt/sources.list https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/sudo apt-get update sudo apt install sl 安装包 sudo apt-cache show sl 查看包信…

leetCode 123.买卖股票的最佳时机 III 动态规划 + 状态压缩

123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09; 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff0…

自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能

自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能 文章目录 [toc] 1.依赖2.Redisson配置2.1单机模式配置2.2主从模式2.3集群模式2.4哨兵模式 3.实现3.1 RedisConfig3.2 自定义注解IdempotentManualCtrlTransLimiterAnno3.3自定义切面Idempote…

【Spring Cloud】深入探索 Nacos 注册中心的原理,服务的注册与发现,服务分层模型,负载均衡策略,微服务的权重设置,环境隔离

文章目录 前言一、初识 Nacos 注册中心1.1 什么是 Nacos1.2 Nacos 的安装&#xff0c;配置&#xff0c;启动 二、服务的注册与发现三、Nacos 服务分层模型3.1 Nacos 的服务分级存储模型3.2 服务跨集群调用问题3.3 服务集群属性设置3.4 修改负载均衡策略为集群策略 四、根据服务…

c# 中的类

反射 Activator.CreateInstance class Program {static void Main(string[] args){//反射Type t typeof(Student);object o Activator.CreateInstance(t, 1, "FJ");Student stu o as Student;Console.WriteLine(stu.Name);//动态编程dynamic stu2 Activator.Cre…

Quartus医院病房呼叫系统病床呼叫Verilog,源代码下载

名称&#xff1a;医院病房呼叫系统病床呼叫 软件&#xff1a;Quartus 语言&#xff1a;Verilog 要求&#xff1a; 1、用1~6个开关模拟6个病房的呼叫输入信号,1号优先级最高;1~6优先级依次降低; 2、 用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;有多个信号呼叫时,显…

【文献阅读】Pocket2Mol : 基于3D蛋白质口袋的高效分子采样 + CrossDocked数据集说明

Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets code&#xff1a; GitHub - pengxingang/Pocket2Mol: Pocket2Mol: Efficient Molecular Sampling Based on 3D Protein Pockets 所用数据集 与“A 3D Generative Model for Structure-Based Drug Desi…

CVE-2020-11978 Apache Airflow 命令注入漏洞分析与利用

简介 漏洞软件&#xff1a;Apache Airflow影响版本&#xff1a;< 1.10.10 环境 Vulhub 漏洞测试靶场 复现步骤 进入 /root/vulhub/airflow/CVE-2020-11978/ 目录运行以下命令启动环境 # 初始化数据库 docker compose run airflow-init # 开启服务 docker compose up -…

SEO的优化教程(百度SEO的介绍和优化)

百度SEO关键字介绍&#xff1a; 百度SEO关键字是指用户在搜索引擎上输入的词语&#xff0c;是搜索引擎了解网站内容和相关性的重要因素。百度SEO关键字可以分为短尾词、中尾词和长尾词&#xff0c;其中长尾词更具有针对性和精准性&#xff0c;更易于获得高质量的流量。蘑菇号-…

PMSM——转子位置估算基于QPLL

文章目录 前言仿真模型观测器速度观测位置观测转矩波形电流波形 前言 今后是电机控制方向的研究生的啦&#xff0c;期待有同行互相交流。 仿真模型 观测器 速度观测 位置观测 转矩波形 电流波形

Lua表实现类

--类 Student { name "Holens",age 1,sex true,Say1 function()print(Student.name.."说话了")end,Say2 function(t)print(t.name.."说话了2")end } Student.Say1() print("*************************************")--声明后添加…

数据结构与算法基础-(5)---栈的应用-(1)括号匹配

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

ESP8266使用记录(四)

放上最终效果 ESP8266&Unity游戏 整合放进了坏玩具车遥控器里 最终只使用了mpu6050的yaw数据&#xff0c;因为roll值漂移…… 使用了https://github.com/ElectronicCats/mpu6050 整个流程 ESP8266取MPU6050数据&#xff0c;处理后通过udp发送给Unity显示出来 MPU6050_Z…

ELK介绍

一、前言 前面的章节我们介绍通过ES Client将数据同步到ElasticSearch中&#xff0c;但是像日志这种数据没有必要自己写代码同步到ES那样会折腾死&#xff0c;直接采用ELK方案就好&#xff0c;ELK是Elasticsearch、Logstash、Kibana三款开源软件的缩写&#xff0c;ELK主要用于…

模拟实现简单的通讯录

前言&#xff1a;生活中处处都会看到或是用到通讯录&#xff0c;今天我们就通过C语言来简单的模拟实现一下通讯录。 鸡汤&#xff1a;跨越山海&#xff0c;终见曙光&#xff01; 链接:gitee仓库&#xff1a;代码链接 目录 主函数声明部分初始化通讯录实现扩容的函数增加通讯录所…

【Idea】idea、datagrip设置输入法

https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5 下载后解压并重命名为 jbr, 然后替换对应 ide…

python爬取沈阳市所有肯德基餐厅位置信息

# 爬取沈阳所有肯德基餐厅位置信息 import requests import json import reurl http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?opkeyword headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0…

C理解(五):编译,链接库,宏,关键字,变量

编译 编译过程 文件.c->(预处理)->文件.i->(编译)->文件.S->(汇编)->文件.o->(链接)->elf程序 预处理 内容:加载头文件(#include),清除注释(//,./*),替换条件编译(#if #elif #endif #ifdef),替换宏定义(#define) …