Maven是可以管理项目,管理依赖,可以自动构建项目的工具
分模块开发步骤1创建maven模块2书写模块代码3将模块打包安装到本地仓库(install指令)4在主模块添加其他模块作为依赖运行主模块(compile指令)
可选依赖是不给用,比如我是B我依赖了A,C依赖了我,我不让C用,我就把我依赖的A隐藏起来,不给C用
而排除依赖是我不用,也就是我是C我依赖了B,B依赖了A,我不想用A,于是我就在B的依赖坐标里用exclusion排除掉A
多模块开发时如果一个被依赖的模块更新了那么其他依赖它的模块可能会有问题,
聚合可以让我们通过一个root模块(聚合工程)管理多个模块实现多个模块一起构建
步骤1.创建maven模块打包类型设置为pom(将这个maven工程设置为聚合工程) ,2.用module标签设置子模块名(相对路径)
继承概念:子工程可以继承父工程的配置信息,常见于依赖的继承
继承作用:简化配置和减少版本冲突
多个模块共同依赖的包可以配置在聚合工程中然后再继承这个聚合工程就可以进行统一依赖管理,所有模块都需要的就直接配成被继承依赖,部分模块需要用的配成可选继承依赖(dependencyManagement标签),那么子模块就在pom.xml写上继承那个父模块和哪些父模块的可选继承依赖就好了
步骤:在子工程用parent标签继承一个父亲,然后把子工程的依赖剪切到父工程(不是所有依赖都移过去,只移公用的)其实全部移过去也没关系,因为不需要的依赖多配也没关系
属性:在pom.xml中配置
作为属性变量
然后spring依赖项的version坐标就可以写${spring.version}
属性可以被资源文件引用,步骤1配置
版本管理:当我们创建工程时我们需要写上我们这个工程的版本,通常我们写1.0-SNAPSHOT等到要发布了再写RELEASE
多环境开发:我们现在使用的是本地数据库,但是在实际开发中我们需要多个其他数据库,那么我们就用多环境开发来解决这个问题
跳过测试(了解):每次打包安装都得测试,那这个测试我们是可以跳过的
多个模块之间是可以共享的,团队内部多台机器的这些资源共享靠的就是私服来实现
私服:一台独立的服务器,用于解决团队内部的资源共享与资源同步问题。
(1)在没有私服的情况下,我们自己创建的服务都是安装在Maven的本地仓库中
(2)私服中也有仓库,我们要把自己的资源上传到私服,最终也是放在私服的仓库中
(3)其他人要想使用你所上传的资源,就需要从私服的仓库中获取
(4)当我们要使用的资源不是自己写的,是远程中央仓库有的第三方jar包,这个时候就需要从远程中央仓库下载,每个开发者都去远程中央仓库下速度比较慢(中央仓库服务器在国外)
(5)私服就再准备一个仓库,用来专门存储从远程中央仓库下载的第三方jar包,第一次访问没有就会去远程中央仓库下载,下次再访问就直接走私服下载
(6)前面在介绍版本管理的时候提到过有SNAPSHOT和RELEASE,如果把这两类的都放到同一个仓库,比较混乱,所以私服就把这两个种jar包放入不同的仓库
(7)上面我们已经介绍了有三种仓库,一种是存放SNAPSHOT的,一种是存放RELEASE还有一种是存放从远程仓库下载的第三方jar包,那么我们在获取资源的时候要从哪个仓库种获取呢?
(8)为了方便获取,我们将所有的仓库编成一个组,我们只需要访问仓库组去获取资源。
Nexus是一款maven私服产品,,,先安装这个私服
浏览器访问私服:http://localhost:8081/
设置用户名密码(admin和admin)
几个问题:
步骤1:私服上配置仓库(两个宿主仓库,分别放snapshot和release)
步骤2:配置本地Maven对私服的访问权限(设置匿名访问)(还有在maven的settings中的相关配置)
步骤3:配置私服的访问路径(在maven的setting文件配置)
步骤
如果私服中没有对应的jar,会去中央仓库下载,速度很慢。可以配置让私服去阿里云中下载依赖。