Maven说明

news2025/1/12 15:53:58

目录

1.说明

2.详细说明

3.Maven模型

4.Maven常用的命令

5.Maven生命周期

6.Maven坐标

7.依赖管理与依赖范围


1.说明

Maven是专门用于管理和构建Java项目的工具,它是基于项目对象模型(POM)的概念,主要功能有:

提供了一套标准化的项目结构

提供了一套标准化的构建流程(编译,测试,打包,发布)

提供了一套依赖管理机制

2.详细说明

(1)Maven提供了一套标准化的项目结构

所有的IDE构建出来的项目结构是一致的,所有IDE构建出来的项目是可以通用的。例如,eclipse创建出来的项目可以直接导入到idea中进行使用。

(2)Maven提供了一套标准化的构建流程

 Maven提供了一套简单的命令来完成项目的构建。

常用命令:

mvn -v //查看版本 
mvn archetype:create //创建 Maven 项目 
mvn compile //编译源代码 
mvn test-compile //编译测试代码 
mvn test //运行应用程序中的单元测试 
mvn site //生成项目相关信息的网站 
mvn package //依据项目生成 jar 文件 
mvn install //在本地 Repository 中安装 jar 
mvn -Dmaven.test.skip=true //忽略测试文档编译 
mvn clean //清除目标目录中的生成结果 
mvn clean compile //将.java类编译为.class文件 
mvn clean package //进行打包 
mvn clean test //执行单元测试 
mvn clean deploy //部署到版本仓库 
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中 
mvn archetype:generate //创建项目架构 
mvn dependency:list //查看已解析依赖 
mvn dependency:tree com.xx.xxx //看到依赖树 
mvn dependency:analyze //查看依赖的工具 
mvn help:system //从中央仓库下载文件至本地仓库 
mvn help:active-profiles //查看当前激活的profiles 
mvn help:all-profiles //查看所有profiles 
mvn help:effective -pom //查看完整的pom信息

常用打包命令:

1. mvn clean package -Dmaven.test.skip=true
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段
package命令完成了项目编译、打包功能、跳过了单元测试,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。
2. mvn clean install -Dmaven.test.skip=true
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段
install命令完成了项目编译、打包功能、跳过了单元测试,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库。
3. mvn clean deploy -Dmaven.test.skip=true
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段
deploy命令完成了项目编译、打包功能、跳过了单元测试,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。

(3)提供了一套依赖管理机制

依赖管理其实是管理你项目所依赖的第三方资源,如jar包,插件等。

没有使用maven的场合:

需要下载jar包,复制jar包到项目,将jar包加入到工作环境。

步骤比较繁琐。

使用Maven的场合:

Maven使用标准的坐标配置来管理各种依赖。

只需要简单的配置就可以完成依赖的管理。

3.Maven模型

仓库分为本地仓库,中央仓库和远程仓库。

本地仓库:自己计算机上的一个目录。

中央仓库:由Maven团队维护的全球唯一的仓库。

地址: https://repo1.maven.org/maven2

远程仓库(私服):一般由公司团队搭建的私有仓库。

当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
如果有,则在项目直接引用;
如果没有,则去中央仓库中下载对应的jar包到本地仓库。

还可以搭建远程仓库,搭建之后jar包的查找顺序则变为:

本地仓库->远程仓库->中央仓库

4.Maven常用的命令

5.Maven生命周期

(1)Clean生命周期(Clean Lifecycle)
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Clean生命周期一共包含了三个阶段:

pre-clean 执行一些需要在clean之前完成的工作。

clean 移除所有上一次构建生成的文件。

post-clean 执行一些需要在clean之后立刻完成的工作。

(2)Default生命周期(Default Lifecycle)
Default Lifecycle是构建的核心部分,编译,测试,打包,部署等等,Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。

一些比较重要和常用的阶段:

compile 编译项目的源代码。

install 将包安装至本地仓库,以让其它项目依赖。

deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

process-test-resources 复制并处理资源文件,至目标测试目录。

process-resources 复制并处理资源文件,至目标目录,准备打包。

test-compile 编译测试源代码。

test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

package 接受编译好的代码,打包成可发布的格式,如 JAR。

validate

generate-sources

process-sources

generate-resources

process-classes

generate-test-sources

process-test-sources

generate-test-resources

process-test-classes

prepare-package

pre-integration-test

integration-test

post-integration-test

verify

(3)Site生命周期(Site Lifecycle)
Site Lifecycle 生成项目报告,站点,发布站点,站点的文档(站点信息,依赖..)。Site生命周期,生成站点信息四个阶段:

pre-site 执行一些需要在生成站点文档之前完成的工作。

site 生成项目的站点文档。

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。

site-deploy 将生成的站点文档部署到特定的服务器上。

6.Maven坐标

什么是坐标?
Maven 中的坐标是资源的唯一标识。
使用坐标来定义项目或引入项目中需要的依赖。

Maven 坐标主要组成
groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.itheima)。
artifactld: 定义当前Maven项目名称 (通常是模块名称,例如 order-service、goods-service)。
version:定义当前项目版本号。

7.依赖管理与依赖范围

(1)依赖管理

 

(2)依赖范围

通过scope可以设置jar包在编译环境,测试环境还是运行环境有效。

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

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

相关文章

Ubuntu 下NGINX 的简单使用

1.NGINX的安装与卸载 1.1.安装NGINX apt-get install nginx1.2.NGINX操作命令 service nginx start #启动 service nginx reload #重新加载配置文件 service nginx restart #重启 service nginx status #查看运行状态 1.3.卸载NGINX apt-get remove nginx nginx-common #…

28 openEuler管理网络-配置主机名

文章目录28 openEuler管理网络-配置主机名28.1 简介28.2 使用hostnamectl配置主机名28.2.1 查看所有主机名28.2.2 设定所有主机名28.2.3 设定特定主机名28.2.4 清除特定主机名28.2.5 远程更改主机名28.3 使用nmcli配置主机名28 openEuler管理网络-配置主机名 28.1 简介 hostn…

XXL-JOB的基本使用

1、执行器 1.1下边配置执行器 下边配置执行器&#xff0c;执行器负责与调度中心通信接收调度中心发起的任务调度请求。 1、首先在媒资管理模块的service工程添加依赖&#xff0c;在项目的父工程已约定了版本2.3.1 XML <dependency><groupId>com.xuxueli</gro…

【Web安全社工篇】——水坑攻击

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 以后赚大钱座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日鸡汤&#xff1a;努力赚钱不是因为爱钱“水坑攻击”&#xff0c;黑客攻…

CVPR 2023 接收结果出炉!再创历史新高!录用2360篇!(附10篇最新论文)

点击下方卡片&#xff0c;关注“CVer”公众号AI/CV重磅干货&#xff0c;第一时间送达点击进入—>【计算机视觉】微信技术交流群2023 年 2 月 28 日凌晨&#xff0c;CVPR 2023 顶会论文接收结果出炉&#xff01;这次没有先放出论文 ID List&#xff0c;而是直接 email 通知作…

【C语言】位段

位段 一.简介 位段和结构体很相似。不同的是&#xff1a; 位段的成员&#xff1a;成员名 : 数字且其成员必须是整型(char、int、unsigned int……) 示例&#xff1a; struct S {char a : 3;char b : 2;char c : 7; };S就是一个位段类型&#xff0c;其成员a为占3个比特位的…

【趣味学Python】Python基础语法讲解

目录 编码 标识符 python保留字 注释 实例(Python 3.0) 实例(Python 3.0) 行与缩进 实例(Python 3.0) 实例 多行语句 数字(Number)类型 字符串(String) 实例(Python 3.0) 空行 等待用户输入 实例(Python 3.0) 同一行显示多条语句 实例(Python 3.0) 多个语句构…

【Day02数据结构 空间复杂度】

最近太忙了都好久没有更新博客了,太难了,抽空水一篇文章,大佬们多多支持. 上篇:时间复杂度分析 目录 前言 一、空间复杂度概念&#xff1f; 二、实例展示 三、.有复杂度要求的算法题练习 1.题目链接&#xff1a;力扣--消失的数字 2.题目链接&#xff1a;力扣--旋转数组 总结: 1…

去课工场成都基地学Java,可行吗?

当然可行&#xff0c;不管是你选择自学Java&#xff0c;还是去培训机构学习都是非常不错的职业选择。选择好赛道能让你的未来收获更多。 2023年了&#xff0c;随着数字经济的发展&#xff0c;互联网已经渗入我们生活工作的方方面面&#xff0c;现在即使是吃个饭点个餐很多时候…

SpringBoot解决跨域方式

跨域是指在 Web 应用中&#xff0c;一个服务器资源或应用访问另一个服务器资源或应用的资源时候。由于浏览器的同源策略&#xff0c;一般情况下同一个域中的网站或应用可以互相访问资源&#xff0c;但跨域访问会被浏览器拒绝。浏览器出于安全考虑&#xff0c;会限制跨域访问&am…

深度学习领域的多任务学习综述

文章目录前言1. 什么是多任务学习&#xff1f;2. 为何要使用多任务学习&#xff1f;3. 多任务学习有哪些类型&#xff1f;3.1 基于硬参数共享的多任务学习3.2 基于软参数共享的多任务学习4. 为什么多任务学习能提升模型的性能&#xff1f;4.1 隐藏数据扩充&#xff08;Implicit…

关于sudo配置

前言这里做一个小补充&#xff0c;主要讲一下关于利用sudo对指令提权以及普通用户无法使用sudo指令的问题。在前面的文章【Linux】一文掌握Linux权限中&#xff0c;我们讲到了关于权限的一些问题。我们知道root身份下&#xff0c;一切畅通无阻&#xff0c;而权限只是用来限制我…

urp SpotLight 衰减方式扩展

背景&#xff1a; 解决默认spotLight 的衰减模式下&#xff0c; 在距离灯光特别近的时候&#xff0c;灯光过爆的情况 解决方法&#xff1a; 修改SpotLight的衰减方式 下图是unity给出的几种衰减模式以及图示&#xff1a; 其中InverseSquare是当前2021.2 unity版本中urp(12.1…

相恨见晚的办公插件神器,颠覆我们对辅助工具的认知

不坑盒子 这是一个非常好用的插件工具&#xff0c;专门应用在Word文档和wps&#xff0c;支持Office 2010以上的版本&#xff0c;操作也简单且实用。 不坑盒子下载及使用说明 一键排版功能 像是下面的自动排版功能&#xff0c;可以在配置里面先设定好需要的格式&#xff0c;…

结合java中的锁聊聊锁的本质

在操作系统里面&#xff0c;也会遇到什么信号量、互斥量&#xff0c;然后说利用互斥量、信号量可以实现锁的功能&#xff0c;而操作系统提供的原语有又mutex锁在学习数据库的时候&#xff0c;什么表锁、行锁、读锁、写锁、排它锁、意向锁、meta锁等等&#xff0c;各种各样的锁的…

mysql数据库limit的四种用法

文章目录前言一、语法二、参数说明三、常用示例-4种用法总结前言 mysql数据库中limit子句可以被用于强制select语句返回指定的记录数。limit接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数&#xff0c;第一个参数指定第一个返回记录行的偏移量&#xff0c…

实践数据湖iceberg 第四十一课 iceberg的实时性-业界的checkpoint配置

系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中&#xff0c;以sql方式从kafka读数据到iceberg 实践数据湖iceberg 第四课 在sqlclient中&#xff0c;以sql方式从kafka读数据到…

硬件系统工程师宝典(12)-----EMC应该知道的事

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。上篇我们说到在做电源完整性分析时去耦电容要遵循的规则&#xff0c;大电容的去耦半径大&#xff0c;小电容的去耦半径小&#xff0c;电容焊盘扇出时…

2023年java春招面试题及答案

2023年java春招面试题1、下面有关jdbc statement的说法错误的是&#xff1f;2、下面有关JVM内存&#xff0c;说法错误的是&#xff1f;3、下面有关servlet service描述错误的是&#xff1f;4、下面有关servlet和cgi的描述&#xff0c;说法错误的是&#xff1f;5、下面有关SPRIN…

Radio Link Monitoring(RLM)

欢迎关注微信同步公众号“modem协议笔记”。 这篇看下radio link monitoring相关的内容&#xff0c;就是UE进行DL radio link quality监听的规定&#xff0c;这部分与RLF的判定息息相关。市面上讲NR相关的书籍&#xff0c;多少都会涉及这部分内容&#xff0c;可能spec上这块的…