maven学习2

maven学习(MOOC)

工具创建maven项目

问题:在工具中的maven项目的骨架加载缓慢问题?

解决方法:

1、先去官网下载一个文件(archetype-catalog.xml)

网址:https://repo.maven.apache.org/maven2/archetype-catalog.xml
向下翻找到archetype-catalog.xml,右键另存到桌面
向下翻找到文件右键点击另存到桌面将其复制粘贴到maven的本地仓库中
在这里插入图片描述
解决IntelliJ IDEA 创建Maven项目速度慢问题 DarchetypeCatalog 在IDEA中设置archetype的使用方式为local; -DarchetypeCatalog=local

2配置当前的maven

一定要使用为新项目设置archetype的使用方式为local; -DarchetypeCatalog=local
xt_Q1NETiBAcXFfNDA1NjU4NzQ=,size_20,color_FFFFFF,t_70,g_se,x_16)

添加-DarchetypeCatalog=local
在这里插入图片描述

快速构建maven项目时,问题:自定义servlet版本问题?

问题描述在使用骨架快速创建项目时,
在这里插入图片描述
定义web的xml文件中的web版文
项目一旦定义好之后就将其放到本地仓库中
步骤执行命令:构建骨架mvn archetype:create-from-project
执行后将其添加到本地仓库里面
可能出现文件缺失:
需要将bin文件下的mvn.cmd文件复制一份更改后缀为bat就可以了,其实两个都是批处理文件,新版将其给删了
在这里插入图片描述
命令:mvn clean install
把当前项目骨架安装到本地仓库里面
在这里插入图片描述
然后添加骨架填写骨架的gav坐标,gav坐标在pom.xml文件中
然后通过自定义的骨架添加项目

maven高手进阶

1、maven依赖范围管理:

范例如果不定义servlet依赖的范围,将会采用默认的依赖范围,默认的依赖范围是compile范围,将会导致打包部署的时候servlet也会被包含进来,造成jar包冲突,需要将其设定为运行编译有效provided,然后访问项目就不会出现问题。
在这里插入图片描述

这就是依赖管理(scope)

2、依赖设定:父子项目依赖传递

什么是父子项目?
快速创建父项目:
更改父项目中的pom文件
在这里插入图片描述
父项目中的基本依赖:
在这里插入图片描述
父项目中的统一管理依赖:只有在子项目中才会使用
在这里插入图片描述
父项目:没有实际导入依赖容器中的依赖
在这里插入图片描述

父项目中版本的统一管理
在这里插入图片描述
在这里插入图片描述
在实际开发中spring的jar包不止一个,可以使用properties申明的版本号进行修改,
就能将全局的版本号进行的修改

建立一个子项目,建立父项目和子项目的依赖关系:
在父子项目中子项目会自动继承父项目中的基本依赖
在这里插入图片描述
子项目会导入父项目的基本依赖
在这里插入图片描述
同时也可以使用其他方式,使用父项目依赖容器中的依赖:
在子项目中添加父项目的依赖容器的依赖不需要添加版本号,便于父项目统一管理。
在这里插入图片描述
再次执行导入依赖后,子项目成功添加了父项目中的依赖容器的依赖。
在这里插入图片描述
总结:
在maven中子项目通过标签来完成对父项目的一个继承关系,父项目中的和用来统一管理多个子项目中使用的多个jar包的统一版本,通过父项目来管理这些依赖,实现多个子项目中多个依赖的复用。
注意:
1、父项目中的打包方式统一为pom打包方式
2、父子项目,合理有效的复用依赖jar包,子项目互相独立,更加便于敏捷开发和独立管理。(项目之间的系统集成性能较差)(部署测试需要对每个项目进行打包,最后将所有打包结果,手工统一整理到一起,这是一个父子项目下的缺点)

maven聚合项目统一管理

(对他们的打包测试部署统一管理,提高效率),
聚合项目中呢项目之间整体性较高,便于系统的集成和维护

聚合关系演示

1、首先新建一个项目(quickstart),聚合项目的顶级项目创建成功。
在这里插入图片描述
打包方式修改为pom方式
在这里插入图片描述

2、在顶级项目中创建子项目
直接在项目上new一个module,以同样的方式构建项目
在这里插入图片描述
默认会有一个parent指向顶级项目,
在这里插入图片描述
在子项目中的pom中默认添加并自动继承了顶级项目,比手动创建效率高
在这里插入图片描述
并且在父项目中会多出来一部分modules,
在顶级项目下生成,通过modules集中起来
在这里插入图片描述
好处是当打包是直接对聚合项目打包,会对子项目也进行打包,如果是纯粹的集成关系,不会实现,但是通过聚合项目的方式统一进行打包部署,这就是聚合项目的优势。
最终形态是聚合项目和继承项目两种模式结合在一起完成统一依赖管理和统一打包部署。
更加便捷与对maven项目的构建,尤其以后的分布项目开发或者微服务项目开发。
总结:在一个聚合项目中对多个项目进行统一管理,对于打包、测试、部署等统一管理,提高效率,项目之间整体性高,便于系统集成和维护

dependencies和dependencyManagement的区别概述

从宏观上讲,dependencies 中的 dependency 元素下声明的依赖会被引入当前项目,而且在子项目中即使不写该依赖项,依旧会从父项目中继承该依赖项(全部继承),而 dependencyManagement 中的 dependencies 中的 dependency 元素下声明的依赖不会被引入当前项目,它仅仅是一个声明,如果在子项目中不写该依赖项,则不会从父项目中继承该依赖项,如果子项目真的需要引入该依赖,则在声明的时候,可以不用指定具体版本号,会自动继承父项目 dependencyManagement 中声明的版本号,从而实现了对依赖版本的统一管理。当然,如果子项目需要使用不同于父项目中声明的版本号,则需要在声明时指定版本号。

依赖设定:常见插件管理

什么是插件?
访问maven的官方网站:maven.apache.org
在这里插入图片描述
例如使用插件

org.apache.maven.plugins
maven-dependency-plugin
3.1.2

在这里插入图片描述

在这里插入图片描述
通过这种方式可以很明确的知道依赖关系,解决冲突问题,
在任意pom中右键,显示依赖关系图
在这里插入图片描述
然后查看整体的依赖关系:一旦出现jar包冲突,可以通过表的方式可快速找到冲突的位置解决,这就是插件的主要功能。
在这里插入图片描述

项目依赖管理:私有服务器

什么是私有服务器?
在企业中为了合理的管理项目的依赖,会架设自己的私有仓库,将项目的公共依赖以及内部的私有的依赖,全部放到私有仓库中进行统一管理。一是保障依赖的团队共享,二是保障敏感依赖的安全性。
创建私有服务器的工具:
在这里插入图片描述
例如使用Sonatype Nexus建立私有服务器:
一、首先打开官方网站:https://www.sonatype.com,是一个国外的网站下载,下载后搭建私有服务器。

二、搭建私有服务器
在这里插入图片描述
porxy:是远程仓库和本地仓库的私有仓库
group:主要用于对仓库进行一个分组管理
hosted:用于部署和发布软件项目
三、创建私有仓库

四、依赖下载和项目发布
查看私有仓库中的依赖
依赖查询顺序,首先查看本地仓库的依赖,然后查看私有仓库的依赖,最后查看中央仓库下载
在这里插入图片描述

maven实战应用

maven构建JavaSE项目

javaSE项目:javaSE项目是java基础,面向对象和常用类的知识。
不通过模板创建,直接创建。
添加log4j的依赖,然后在resources里面添加log4的配置。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
然后上log4的官方网站查相应的配置。

引入jar包
在这里插入图片描述
两种运行方式:
1、当成普通的javaSE项目右键直接运行即可,运行之后在控制台可以得到结果。

2、编辑配置:增加maven命令。
maven:命令运行exec:java -Dexec.mainClass=“com.example.hello”
在这里插入图片描述

依赖冲突:解决办法

直接冲突依赖

例如:下面两个依赖依赖同一个依赖的不同版本,出现了依赖的冲突
在这里插入图片描述
删掉其中的版本低的依赖,
如何排除呢:在commons-beanutils中添加排除冲突的依赖,运行发现排除的是高版本的依赖,所以需要在poi中排除冲突的依赖
在这里插入图片描述
刷新项目:不会出现冲突,POI直接使用commons-beanutils中的commons-logging依赖。
在这里插入图片描述

依赖传递冲突的问题

在这里插入图片描述
解决办法是在项目中使用将之中不需要的项目依赖给删掉,使用
在这里插入图片描述
一般两种冲突的解决办法就是排除引起冲突的依赖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值