Maven
概念:
Maven:项目对象模型(POM),管理项目构建,报告和文档的项目管理工具软件
作用:
1.构件项目,更多的话就是帮助我们在不同的服务器环境下部署,以统一的配置项部署
2.项目资源文件的升级,Maven提供了一个中央仓库,能帮我们自动下载构件
Maven工具原理:
Maven配置:settings.xml文件
1.设置本地库
<localRepository>D:/JT-SOFT/repo</localRepository>
2.配置私服镜像
<mirror>
<id>aliyun</id>
<name>aliyun for maven</name>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
3.创建项目配置
URL: https://start.aliyun.com
4. 选择Springboot版本
5. 项目调试
6. 启动成功
pom.xml文件说明
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--1.指定当前项目的坐标-->
<groupId>com.jt</groupId>
<artifactId>spring_demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring_demo1</name>
<description>spring_demo1</description>
<!--2.maven项目的配置信息,指定字符集和版本-->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<!--3.依赖项-->
<dependencies>
<!--具体的某个依赖
1.依赖的构成要素3项 称之为 "坐标"
1.1 组ID
1.2 项目名
1.3 版本号
2.坐标和本地仓库什么关系?
根据坐标去本地仓库中,查找jar包文件
3.如果依赖项报错了,则第一时间检查本地仓库中的jar包是否正确!!!
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--4.依赖的管理器: 指定相关的依赖的版本信息 -->
<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>
<!--
5.build标签注意事项
1.build中的插件缺一不可.
2.mainClass中的路径必须与主启动类一致.
3.如果以后粘贴复制代码,只复制dependencies内容即可.
-->
<build>
<plugins>
<!--maven工具负责编译当前的项目-->
<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>
<!--springboot项目依赖maven的必要工具-->
<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>
</project>
关于maven常用指令
clean指令
说明: clean可以删除项目中的target目录. target目录包含了xxx.java 编译之后的所有xxx.class文件.
compile指令
说明: 将项目中的xxx.java文件编译为xxx.class文件,由maven工具完成.
install指令
说明: 将开发完成的项目打包部署 将项目形成xxx.jar包文件.
根据maven坐标,会在本地仓库中生成jar包.
关于jar包依赖传递性的问题
规则说明
当用户依赖A.jar包,但是A.jar自动依赖B.jar包,B.jar包自动依赖C.jar.当用户只添加A.jar包时,会自动
添加B/C的依赖. 这就是jar包依赖的传递性.
原理说明
maven工具通过dependency标签和坐标查找指定的jar包文件.
根据坐标查找包
maven加载完成jar包之后,扫描当前文件的 xxxx.pom文件.
之后根据该坐标继续添加jar包依赖项. 直到将所有的依赖信息加载完成为止
如何保证jar包的安全性
SHA1算法
SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。 0-9 A-F
关于hash知识复习
-
如果数据相同,进行相同的hash(函数!!!)计算, 问:结果是否相同
答案: 必定相同!!! -
如果数据不相同,进行相同的hash(函数!!!)计算, 问: 数据是否相同
答案: 可能相同!!!
本质: HASH碰撞: 数可能不相同,但是结果可能一样. -
hash碰撞能不能避免???
不能避免,但是可以降低碰撞的概率 -
常见hash一般是8位16进制数. 排列组合有多少种?
十六进制: 0-9 A-F 00000000-FFFFFFFF 答案: 2^32
思路: (24)8= 2^32
解释: hash值的数量的是有限的,但是需要hash的数据是无限的!!!
数据传递的原理