Maven基础和高级应用

传统web工程crm:jar包在项目中
maven开发的crm项目:jar包不在项目中
特点:代码可重用
依赖管理:maven工程对jar包的管理过程

仓库分三类:本地仓库、远程仓库【私服】、中央仓库(放置了几乎所有开源的jar包)
常用命令:

mvn clean:清空项目编译后的文件(class文件等)
mvn compile:对项目进行编译
mvn test:编译测试代码,同时也编译了其他代码(对整个项目进行了编译)
mvn package:对文件进行打包(war包),可以在pom.xml中指定修改
mvn install:执行了上面三个代码所有的功能

生命周期:
在这里插入图片描述
概念模型图:
在这里插入图片描述
项目对象模型(POM):主要包含三类信息:项目自身信息,项目运行所需要的jar包,运行环境信息 tomcat,jdk等。
依赖管理模型:全都放置的项目的jar包的坐标。(对应 公司组织的名称,项目名,版本名)
概念模型解析:
在这里插入图片描述
maven是一个项目管理工具:主要是依赖管理和一键构建
依赖管理:maven对项目中jar包的管理过程。传统工程我们直接把jar包放置在项目中。maven工程真 的jar包放置在仓库中,项目中只用放置jar包的坐标。
**一键构建:**maven自身继承了tomcat插件,可以对项目进行编译,测试,打包,安装,发布等操作。
仓库的种类:本地仓库,远程仓库【私服】,中央仓库。
仓库之间的关系
当我们启动一个maven工程的时候,maven工程会通过pom文件中jar包的坐标去本地仓库找对应
的jar包。默认情况下,如果本地仓库没有对应jar包,maven工程会自动去中央仓库下载jar包到
本地仓库。
在公司中,如果本地没有对应jar包,会先从私服下载jar包,如果私服没有jar包,可以从中央
仓库下载,也可以从本地上传。
maven三套生命周期:清理生命周期,默认生命周期,站点生命周期。

maven工程要导入jar包的坐标,就必须要考虑解决jar包冲突。
maven导入jar包的一些概念:
**直接依赖:**项目中直接导入的jar包,就是该项目的直接依赖包。
**传递依赖:**项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。
解决jar包冲突的方式一:
第一声明优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。先声明的jar包坐
标下的依赖包,可以优先进入项目中。
解决jar包冲突的方式二:
路径近者优先原则。直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的直
接依赖包。
解决jar包冲突的方式三:【推荐使用】
直接排除法。
排除掉不想要的传递依赖。当我们要排除某个jar包下的依赖包,在配置exclusions标签的时候,
内部可以不写版本号。因为此时依赖包使用的版本号默认和本jar包一样。
在这里插入图片描述
dependencyManagement:锁定jar包版本。
maven工程是可以分父子依赖关系的。
凡是依赖别的项目后,拿到的别的项目的依赖包,都属于传递依赖。
比如:当前A项目,被B项目依赖。那么我们A项目中所有jar包都会传递到B项目中。B项目开发者,
如果再在B项目中导入一套ssm框架的jar包,对于B项目是直接依赖。那么直接依赖的jar包就会
把我们A项目传递过去的jar包覆盖掉。
为了防止以上情况的出现。我们可以把A项目中主要jar包的坐标锁住,那么其他依赖该项目的项目中,即便是有同名jar包直接依赖,也无法覆盖。

maven工程拆分与聚合的思想:
maven把一个完整的项目,分成不同的独立模块,这些模块都有各自独立的坐标。哪个地方需要
其中某个模块,就直接引用该模块的坐标即可。
今后如果公司开发一个新项目,先考虑的问题不是dao,service,utils,domain如何编写,
要考虑的是dao,service,utils,domain这些模块是否已经存在,如果存在直接引用。
以上说的就是maven拆分的思想。
我们可以把拆分零散的模块聚合到一起编写一个完整的项目,这就是maven聚合思想。
工程和模块的区别:
工程不等于完整的项目,模块也不等于完整的项目,一个完整的项目看的是代码,代码完整,就可以
说这是一个完整的项目,和此项目是工程或模块没有关系。

工程天生只能使用自己内部资源,工程天生是独立的。后天可以和其他工程或模块建立关联关系。
模块天生不是独立的,模块天生是属于父工程的,模块一旦创建,所有父工程的资源都可以使用。

父子工程之间,子模块天生继承父工程,可以使用父工程所有资源。
子模块之间天生是没有任何关系的。
父子工程之间不用建立关系,继承关系是先天的,不需要手动建立。
平级之间的引用叫依赖,依赖不是先天的,依赖是需要后天建立的。

传递依赖下来的jar包是否能用:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值