Maven
1.maven项目对象模型:pom
可以通过一小段描述信息来管理项目的创建,报告和文档的项目管理工具软件
2.maven下载地址
https://maven.apache.org/download.cgi
3.maven路径要求
路径不能有中文,空格,特殊字符,不要放在c盘
注意:使用c语言编辑软件容易产生问题,maven使用Java语言开发的
4.maven工作原理
- 1.角色划分
1> 本地仓库:在本机中保存jar包的文件目录
2>远程仓库:maven官网维护的jar包信息,其中解决了版本冲突问题,几乎维护了所有的开源jar包
3>私服镜像:为了让本地用户快速的获取jar包,使用私服镜像服务器提前下载jar包 速度更快 - 2 maven的工作原理
1>镜像服务器搭建时,需要定期拉去远程服务器中的jar包.
2>.获取到的包.保存到镜像服务器本地.方便用户以后获取.
3>.用户使用jar包时,先检查本地仓库中是否有包,如果没有 则连接私服镜像获取jar包. 如果有,则直接使用.
4>.将jar包保存到本地之后,供用户使用. - 3 maven的配置
1>在maven的conf文件中打开settings.xml文件
2>配置本地仓库地址
3>配置私服镜像服务器
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
- 4 IDEA整合maven
注意:IDEA每此打开一个新的窗口,需要配置新的maven
- 5 创建一个新的maven项目
1>URL地址:http://start.aliyun.com
2>指定坐标:
3>确定版本,添加依赖
5.关于maven项目报错问题
1.兼容性问题
idea版本不要太低,至少在2020以上,兼容maven3.8.x
2.网络问题
1>.要求下载jar包文件时,不能使用手机热点!
2>. 检查maven的配置 1.配置本地仓库 2.配置私服镜像
3>. 如果私服镜像链接有问题 切换如下的链接
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
4>先将maven仓库清空
3.关于maven缓存问题
说明: maven下载jar包之后,可能因为缓存导致如下报错.但是程序可以正常的执行. 说明jar包下载没有问题的. 由于缓存导致的异常.
解决方案:
1>. 重启IDEA
2>. 清空IDEA的缓存
4. IDEA不能识别maven的说明
1>.IDEA识别maven的效果
2>.IDEA不能识别maven的效果 IDEA将项目当做普通的目录看待.
3>.解决方案 将项目添加为maven
5.关于maven高级知识讲解
- maven坐标的意义
<!--1.定义maven的坐标
1.1组id 一般采用公司域名倒写的方式 www.tedu.cn
1.2项目名 项目名称必须唯一
1.3版本号 指定项目的版本的.
问题: maven的坐标有什么意义?
答:
1.maven中央仓库采用坐标的形式管理所有的jar包.
2.可以根据坐标的位置,唯一定位jar包.
3.可以根据坐标.依赖其它项目!!!.
-->
<groupId>com.jt</groupId>
<artifactId>spring_demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring_demo1</name>
<description>spring_demo1</description>
- pro文件说明
<!--表示当前maven的配置信息-->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--以后springboot的平台的版本就是2.3.7-->
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
- 关于依赖项的说明
说明:maven通过依赖项,指定加载jar包的路径
说明2: 根据坐标.查找指定的jar包.
- 常见异常的说明: 有时maven jar包下载不正常.但是maven的工具以为是正确的.导致jar包的导入报错!!! 如果遇到这样的报错信息.,则将jar包删除即可.
然后刷新maven
- 管理器说明
<!--依赖的管理器,在内部指定的jar包的版本,所以不需要手动指定
一般多见于 springboot/springCloud的项目.
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- build说明
说明: build的标签 项目编译/打包时有用.
打包: 将java项目打成 xxx.jar包
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<!--注意事项:必须与当前项目的主启动类一致 -->
<mainClass>com.jt.SpringDemo1Application</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
-
Java项目打包说明
常识:
1.将xxxx.java的文件编译为xxxx.class文件
2.将xxxx.class的文件按照特定的格式要求生成xxxx.jar包命令:
1>. clean 清空项目中的target目录(class文件)
2>. compile 使用maven工具进行编译 将xxx.java生成xxx.class
一般不用,因为IDEA会自动编译
3>. install 将java项目打包为xxx.jar
关于jar包文件的说明:
1>. 默认条件下 在target目录中会生成xxx.jar包文件. (特殊:IDEA有问题,target下没有文件.)
2>. install之后会在本地仓库中生成jar包!!!
6.关于jar包依赖传递的问题
- 规则说明
当用户依赖A.jar包 ,但是A.jar自动依赖B.jar包.B.jar包自动依赖C.jar包 ,当用户只添加A.jar包时,会自动添加B/C的依赖 这就是jar包的传递性 - 原理说明
1>maven通过dependency标签和坐标查找指定的jar包文件
2>根据坐标查找包
- maven加载完成jar包之后,扫描当前文件的xxx.pom文件
- 之后根据该坐标继续添加jar包依赖项. 直到将所有的依赖信息加载完成为止
7.如何保证jar包的安全性
- SHA1算法
安全散列算法,是一种密码散列函数,可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数 - 关于hash只是复习
1> 如果 数据相同 进行相同的hash计算,问:结果是否相同?
答:必定相同
2> 如果数据不相同,进行相同的hash计算,问:结果是否相同?
答:不一定 可能会出现哈希碰撞 哈希碰撞本质就是数据可能不一样,但是hash结果可能一样
3> 哈希碰撞能不能避免?
答:不能,但是可以降低碰撞的概率
因为hash值得数量是有限的,但是需要进行hash计算的数据是无线的
4.>常见hash一般是8位16进制数,排列着有多少种?
思路:十六进制:0-9 A-F 00000000-FFFFFFFF
答:2^32 - 数据传递的原理
名词:消息摘要