maven 02

一、 回顾

1. maven 的两个优点
	依赖管理:对jar包统一管理
	项目构建: 对编码完成后的过程标准化,交给命令来完成
	适合大型项目的开发,可以把一个大的项目拆分成多个子项目
2. 常用的命令
  clean 清理target目录
  compile:编译
  package :打包到target目录
  install:安装到本地 仓库 
  test:测试:执行test/java 源码包中的所有的测试方法
  deploy: 部署,把打包后的文件安装到私服
3. 命令的生命周期
	清理周期:clean
	默认周期:compile, test, package,install ,deploy
	站点周期:site :用来项目站点文档-- 一般不用
注意:在同一套生命周期内,执行后面的命令会自动执行前面的所有命令
4. 仓库的分类
	本地仓库:本机文件夹
	中央仓库: maven团队维护的中央仓库
		https://repo1.maven.org/maven2/   适合下载jar包
		https://mvnrepository.com/    适合找jar包的依赖
	私服:第三方服务器
5.自定义骨架
6. 项目依赖jar包,默认的依赖范围是 compile
	servlet-api ,jsp-api,选择依赖范围provided

二、教学目标

  1. 依赖传递冲突解决
  2. 回顾SSM框架
  3. 拆分和聚合SSM框架
  4. 依赖范围对传递依赖的影响(了解)
  5. 私服的下载和搭建(了解)

三、依赖传递冲突解决

a. 什么是依赖
	jar就是依赖
b. 什么是依赖传递
	spring-context.jar 依赖了spring-aop.jar ,在依赖了spring-context.jar会自动引入spring-aop.jar
c. 什么是冲突
	spring-context.jar 依赖了spring-aop.jar
	spring-webmvc.jar 依赖了spring-aop.jar

1、maven自带的调优原则

1. 第一个声明者优先(根据坐标的导入顺序来确定最终使用哪个传递过来的依赖)
2. 路径近者优先(把依赖的jar显示声明到pom文件,就不会用自动引入的)

2、排除依赖

当spring-webmvc和spring-aop同时依赖spring-beans,这时只要在spring-webmvc写exclusions(排除依赖),就不会自动引入jar
在这里插入图片描述

3、锁定版本(重点)

采用直接锁定版本的方法确定依赖jar包的存在,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本为准添加到工程中,此方法企业最常用

版本锁定的使用方式
第一步:在dependencyManagement标签中锁定依赖版本
第二步:在dependencies标签中声明需要导入的maven坐标
在这里插入图片描述
在这里插入图片描述

四、分模块构建工程

1.分析

在现实生活中,汽车厂家进行汽车生产时,由于整个生产过程非常复杂和繁琐,工作量非常大,所以车场都会将整个汽车的部件分开生产,最终再将生产好的部件进行组装,形成一台完整的汽车。

在这里插入图片描述

2.继承

在Java语言中,类之间是可以继承的,通过继承,子类就可以引用父类中非 private的属性和方法。同样,在 maven工程之间也可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。继承的目的是为了消除重复代码。

在这里插入图片描述
实际例子
父工程
在这里插入图片描述
子工程
在这里插入图片描述
继承过来的jar
在这里插入图片描述

3.聚合

在这里插入图片描述
实际例子
1.选择聚合其他工程
在这里插入图片描述
2.执行命令
在这里插入图片描述
在这里插入图片描述
3.日志打印成功

在这里插入图片描述

4.maven工程聚合(分模块构建)

在这里插入图片描述
1.创建父项目,用来管理jar版本,方便操作子工程(父项目一般只有依赖)
目录结构(web注意选择mavenweb骨架)
在这里插入图片描述
父目录里子工程
在这里插入图片描述
锁定jar版本,当子工程继承的时候,不用写版本号
在这里插入图片描述

2.创建子项目
1.聚合2.继承
在这里插入图片描述
在这里插入图片描述
3.子类pom导入依赖(不用写版本号)
dao依赖pojo,service依赖dao,web依赖service
jar只需要在dao写完,其他都能生效
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.最后控制层东西放到控制层,那个层的东西放到哪里去
在这里插入图片描述
在这里插入图片描述
注意
classpath和classpath*区别:

classpath:只会到你的class路径中查找找文件。

classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。

如果不写classpath*,就拿不到其他模块的配置xml文件,就不会注册bean,最后项目运行失败

五、maven私服

5.1 说明

maven仓库分为本地仓库和远程仓库,而远程仓库又分为 maven中央仓库、其他远程仓库和私服(私有服务器)其中,中央仓库是由 maven官方提供的,而私服就需要我们自己搭建了。

maven私服就是公司局域网内的 maven远程仓库,每个员工的电脑上安装 maven软件并目连接 maven私服,程序员
可以将自己开发的项目打成ja并发布到私服,其它项目组成员就可以从私服下载所依赖的jar。私服还充当个代理
服务器的角色,当私服上没有jar包时会从 maven中央仓库自动下载

nexus是一个maven仓库管理器(其实就是个软件), nexus可以充当 maven私服,同时 nexus还提供强大的仓
库管理、构件搜索等功能。

5.2 搭建maven私服

  1. 下载
    在这里插入图片描述
  2. 安装
    管理员cmd,到bin文件目录,执行命令nexus.bat install
  3. 启动
    在这里插入图片描述
  4. 运行
    启动nexus服务后,访问http://localhost:8081/nexus
    默认账号:admin密码:admin123
    在这里插入图片描述

nexus仓库类型

1和2重点,其他了解
在这里插入图片描述

nexus仓库和磁盘目录对应关系

在这里插入图片描述

5.3 将项目发布到maven私服

在这里插入图片描述

修改maven config(settings.xml)文件

在这里插入图片描述

在servers标签里添加账户

	<server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
	<server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

在这里插入图片描述

在要上传的项目 pom里写配置文件

	<distributionManagement>
        <repository>
            <id>releases</id>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

解释一下:

  • id:跟上面在setting对应上就可以
  • url:跟仓库对应的路径

在这里插入图片描述
在这里插入图片描述

最后执行部署命令

在这里插入图片描述
在这里插入图片描述

为什么只上传到快照里,跟版本声明有关系

在这里插入图片描述

5.4 从私服下载jar到本地仓库

在这里插入图片描述

在settings.xml中配置下载模板

<profile>   
	<!--profile的id-->
   <id>dev</id>   
    <repositories>   
      <repository>  
		<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
        <id>nexus</id>   
		<!--仓库地址,即nexus仓库组的地址-->
        <url>http://localhost:8081/nexus/content/groups/public/</url>   
		<!--是否下载releases构件-->
        <releases>   
          <enabled>true</enabled>   
        </releases>   
		<!--是否下载snapshots构件-->
        <snapshots>   
          <enabled>true</enabled>   
        </snapshots>   
      </repository>   
    </repositories>  
	 <pluginRepositories>  
    	<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
        <pluginRepository>  
        	<!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
            <id>public</id>  
            <name>Public Repositories</name>  
            <url>http://localhost:8081/nexus/content/groups/public/</url>  
        </pluginRepository>  
    </pluginRepositories>  
  </profile>  

在settings.xml激活模板

<activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>

在这里插入图片描述

测试

下载一个jar,如果私服有,从私服拿,如果私服没有从中央仓库下载,然后放到私服里面,从私服拿
在这里插入图片描述
在这里插入图片描述

5.5 将第三jar包安装到maven本地仓库

拿一个oracle的jar测试,因为收费,maven下载不了
在这里插入图片描述

cmd(管理员)执行命令

一一对应
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc5 -Dpackaging=jar -Dfile=ojdbc5.jar -Dversion=11.2.0
在这里插入图片描述

查看本地仓库

在这里插入图片描述

5.6 将第三jar安装到maven私服

配置maven setting.xml

<server>
      <id>thirdparty</id>
      <username>admin</username>
      <password>admin123</password>
    </server>

在这里插入图片描述

执行命令

mvn deploy:deploy-file -Dfile=ojdbc5.jar -DgroupId=com.oracle -DartifactId=ojdbc5 -Dversion=11.2.0 -Dpackaging=jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值