【Java学习】Maven原理

摘要:
Maven简化并标准化了项目建设过程。Maven提高了重复性,并负责建立相关业务。Maven将所有项目的共享组件存储在一个统一的位置,我们称之为仓库。任何组件都有其唯一的坐标,根据该坐标可以定义其在仓库中的唯一路径,这就是Maven仓库的布局方法。这是Maven的强大功能之一,它支持传递依赖。
一、Maven能做什么

https://www.limuke.top/archives/local-jar-mave

 1、假设我们有10个项目,都需要引入spring core模块,那么需要十份重复的Spring Core.jar和commons-logging.jar

   使用Maven:maven使用本地仓库存储的jar,所有项目都会公用仓库中的同一分jar

 2、Spring Core.jar必须同时引入版本兼容的commons-log.jar,否则会报错

   使用Maven:maven不需要关心这些问题,会自动引入Spring core.jar所需的兼容版本jar

3、如果一个项目里面有个100个jar,不知道那些jar是彼此关联的,那些是互相排斥的,当需要升级版本时,增加或删除一些jar,很容易出各种问题

   使用Maven:maven升级jar,只需要把版本3.x改成4.x,他会自动解决那些问题

【Java学习】Maven原理第1张

 概括的说:Maven是一个项目管理和综合工具。Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。Maven增加可重复性并负责建立相关的业务。

二、Maven的安装和设置

1、安装之前,首先确定你已经安装了JDK

2、下载地址:http://maven.apache.org/download.cgi

3、将安装文件解压到你指定的目录中

4、配置环境变量,变量名M2_HOME,变量值为Maven的安装目录,修改path值,在变量值后面加上bin,例如:%M2_HOME%/bin

5、测试maven环境,执行命令:mvn -v 

三、从Maven模板创建一个项目

 1、整个项目的项目目录结构会自动创建

【Java学习】Maven原理第2张

 2、所有的源代码放在文件夹/src/main/java/,所有的单元测试代码放入:/src/test/java/

 3、附加的一个标准的pom.xml被生成,这个Pom文件类似于Ant build.xml文件,它描述了整个项目的信息,一切“从目录结构”,项目的插件,项目依赖,如何构建这个项目等。

 4、Maven各个目录的解释说明

【Java学习】Maven原理第3张

5、pom的基本信息

【Java学习】Maven原理第4张

 6、pom的依赖关系

 【Java学习】Maven原理第5张

7、pom详解

  a、添加插件

【Java学习】Maven原理第6张

 b、去除依赖

【Java学习】Maven原理第7张

 c、继承

【Java学习】Maven原理第8张

 d、聚合(通过一个大的项目来整合各个小的模块)

【Java学习】Maven原理第9张

 e、指定在Build时需要的资源文件(resource)

【Java学习】Maven原理第10张

 四、Maven的生命周期

1、clear:移除上一次构建生成的文件

2、compile:编辑项目的源代码

3、test:使用单元测试框架进行测试,测试代码不会被打包或者部署

4、package:接受编译好的代码,打包成可发布的格式

5、install:将包安装到maven本地仓库,供本地其他maven项目使用

6、deploy:将最终的包发布到远程仓库,供其他开发人员和maven项目使用。

7、site:生成项目的站点文档

五、Maven仓库

【Java学习】Maven原理第11张

 在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构建。

Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。

 任何一个构件都有其唯一坐标,根据这个坐标可以定义其在仓库中的唯一路径,这就是Maven仓库的布局方式。

如:groupId=org.testing

       artfactId=testing

       version=5.8

  生成路径:org/testing/testing/5.8/testing-5.8-jdk15.jar

六、Maven的依赖

 1、依赖的传递性

  一个复杂的项目会包含很多依赖,也有可能包含依赖其他构件的依赖。这个是Maven的强大特征之一,它支持了传递性依赖。

  依赖原则:路径优先原则,第一声明原则。

 解决依赖问题:

通过调整dependency的顺序来解决:那个依赖的顺讯在前面就依赖那个

自己添加一个denpendeny来解决:因为该路径是最小的

通过exclusions元素排除不想要的传递性依赖。

2、Version解释

 snapshot版本表示不稳定,处于开发中的版本,即快照版本

 release:表示趋于稳定,当前停止更新,可以用于发行的斑斑。

场景:协同开发时,如果A依赖B,由于B频繁更新,B应该使用SNAPSHOT来标识自己。

3、依赖范围Scope

compile(默认):编译范围的依赖,它在编译和打包的时候都会把该依赖打包进去

test:测试依赖范围,它在编译和打包的时候不会把该依赖打包进去

provided:在编译和测试范围有效,最后生成war包时不会打包进去

rumtime:运行时依赖,编译的时候不依赖

import:导入依赖范围

system:系统依赖范围

转载:https://www.cnblogs.com/chhyan-dream/p/12037568.html

免责声明:文章转载自《【Java学习】Maven原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇树状数组求逆序对 附HDU1394Oracle EBS SOA 接口删除及发布下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Maven知识整理

一、概念: Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 1、项目...

使用verdaccio搭建npm私有仓库

https://verdaccio.org/docs/en/configuration#authentification verdaccio私有仓库 背景 verdaccio 业务需求,会有许多公司内部开发的私有包,这些包希望可以统一管理,方便开发和使用,此时就需要一个内部的仓库来保存这些包。使用内部仓库还有一个好处,就是速度快,自己搭建npm 服务器,...

推送镜像到腾讯云

目录 1、添加容器 2、开通镜像服务 3、创建命名空间 4、创建镜像仓库 5、推送镜像到仓库使用指引 1、添加容器 2、开通镜像服务 选择容器服务,浏览器左侧菜单会显示与容器服务相关的导航菜单,点击“镜像仓库”下面的“我的镜像”,会提示开通镜像服务,根据提示输入仓库密码。这个密码用来登录镜像仓库,到后面会用到。 3、创建命名空间 在“我的...

nexus在linux上搭建

Maven 仓库的分类:(maven的仓库只有两大类) 1.本地仓库  2.远程仓库,在远程仓库中又分成了3种: 2.1 中央仓库  2.2 私服  2.3 其它公共库 有个maven私服可以很方便地管理我们的jar包和发布构建到远程仓库,本文就介绍了如何在linux下一步步使用nexus搭建maven私服。 私服是架设在局域网的一种特殊的远程仓库,目的是...

git用法小结(1)--建立远程仓库

最近一直在学习使用git来管理自己的程序,总是今天东学一点,明天西凑一点,到用的时候,总是有些茫然不知所措。 在博客园里看见一篇老好的文章,教我们做笔记啦,但是做完笔记还是要记得总结哦! 来吧,让我们一起来总结吧,今天先来看看git远程的仓库是怎么建立的。 当然,使用git嘛,第一步肯定是得新建一个git仓库,总得有个操作的空间吧,巧妇难为无米之炊嘛。...

简述Docker镜像、容器、仓库概念

Docker镜像 Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。 例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。 镜像是创建Docker容器的基础,通过版本管理...