Maven是什么?看完这篇就懂了
作者:wangjing 来源:第七下载 更新:2022-04-08 10:27:27 阅读:次
用手机看
01
Maven是什么?
-
jar包不统一,jar包不兼容导致的问题
-
工程升级维护过程操作繁琐
02
Maven的作用
![](/d/file/20220408/630db17bb82eefb5874f4b5672e6054a.png)
03
Maven的按装
04
Maven文件结构
![](/d/file/20220408/e31dd06f7bcb102a22ec3065cb0d9906.png)
-
bin:maven的核心运行文件
-
boot:mavem的类加载器
-
conf:maven的核心配置
-
lib:maven的依赖jar包
05
Maven环境变量配置
-
依赖于java,需要配置JAVA_HOME
-
设置Maven自身的MAVEN_HOME
-
运行cmd输入mvn检测是否安装成功
06
Maven的基础概念
仓库
![](/d/file/20220408/b34b4f1901d8ee60a39a24ef799055c6.png)
-
本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
-
远程仓库:非自己电脑上的仓库,为本地仓库提供资源
-
中央仓库:Maven团队维护,存储所有资源的仓库
-
私服:部门/公司范围内存储的仓库,从中央仓库获取资源
-
私服的作用:
-
保存具有版权的资源,包含自主研发或购买的jar(中央仓库的的jar包都是开源的,不能存储具有版权的资源)
-
一定范围内共享资源,仅对内部开放,不对外共享。
坐标
-
groupId:定义当前Maven项目隶属于组织的名称(通常是域名反写)
-
artifactld:定义当前Maven项目的名称(通常是模块名称,例如:CRM,SMS)
-
version:定义当前项目的版本号
-
packaging:定义当前项目的打包方式
本地仓库配置
-
进入Maven的conf文件夹中的setting文件
${user.home}/.m2/repository
<settings>
<localRepository>D:\maven\repository</localRepository>
</settings>
![](/d/file/20220408/4a2783b52d3f39ce9f16ed0efc9c364e.png)
远程镜像仓库的配置(当需要访问中央仓库的时候,就会去访问镜像仓库。ps:中央仓库在国外,访问速度慢)
1.
<!-- 配置具体仓库的下载镜像 -->
2.
<mirror>
3.<!-- 此镜像的唯一标识符,用来区分不同的mirror元素 -->
4. <id>ali-maven</id>
5. <!-- 对哪种仓库进行镜像,简单说就是代替哪个仓库 -->
6. <mirrorOf>central</mirrorOf>
7. <!-- 镜像的名称 -->
8. <name>aliyun maven</name>
9.<!-- 镜像的URL -->
10. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
11.</mirror>
Maven项目构建命令
-
mvn compile 编译(在src同级目录下生成一个target文件)
-
mvn clean 清理(删除target文件)
-
mvn test 测试(会在编译同时将test的部分也编译,并执行test内测试方法的内容,在surefile-reports中生成报告内容)
-
mvn package 打包(target文件中生成一个jar包)
-
mvn install 安装到自己本地仓库
创建maven项目(idea)
-
创建一个空的项目
-
file——>setting——>build,execution——>Build Tools ——> Maven
![](/d/file/20220408/d0063b712cbac0561b4030d8abe66d33.png)
![](/d/file/20220408/d3ed80d8293c03e0f7914fa163b9d67c.png)
创建maven 项目
![](/d/file/20220408/8ebe19b472ab054631981eefd02569a6.png)
idea使用maven命令
![](/d/file/20220408/4fbfb01b5038a773cbd4567df4461321.png)
![](/d/file/20220408/68b47e98b5c4a2a0dc355fc461693b34.png)
idea使用原型模板创建项目
![](/d/file/20220408/769a837ab5ad83b38b46e42974104f29.png)
使用原型创建web项目
![](/d/file/20220408/b2616a0736546bef93e06fda0e387849.png)
运行web项目
安装tomcat插件,在右侧maven插件run运行
1.<?xml version="1.0" encoding="UTF-8"?>
2.3.<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4.xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5.<!--指定pom的模型版本-->
6. <modelVersion>4.0.0</modelVersion>
7.
8. <!--组织id-->
9.<groupId>org.example</groupId>
10.<!--项目名称-->
11. <artifactId>untitled1</artifactId>
12.<!--版本号,release(完成版),snapshot(开发版)-->
13.<version>1.0-SNAPSHOT</version>
14.<!--打包方式为web是war包-->
15.<packaging>war</packaging>
16.
17.<name>untitled1 Maven Webapp</name>
18. <!-- FIXME change it to the project's website -->
19.<url>http://www.example.com</url>
20.
21.<properties>
22.<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23. <maven.compiler.source>1.7</maven.compiler.source>
24.<maven.compiler.target>1.7</maven.compiler.target>
25.</properties>
26.27.<dependencies>
28..<dependency>
29.<groupId>junit</groupId>
30.<artifactId>junit</artifactId>
31. <version>4.11</version>
32.<scope>test</scope>
33. </dependency>
34.</dependencies>
35.
36.<!--构建-->
37.<build>
38. <!--设置插件-->
39.<plugins>
40.<!--具体的插件位置-->
41. <plugin>
42.<groupId>org.apache.tomcat.maven</groupId>
43. <artifactId>tomcat7-maven-plugin</artifactId>
44. <version>2.2</version>
45.<!--具体的配置-->46.<configuration>
47.<!--端口-->
48.<port>80</port>
49. <!--虚拟路径-->
50.<path>/</path>
51. </configuration>
52.</plugin>
53.
54. </plugins>
55. </build>
56.</project>
使用命令选项运行
07
Maven的依赖管理
依赖配置
<dependencies>
//单个依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
依赖传递
-
直接依赖:当前项目通过文件依赖配置建立的依赖关系。
-
间接依赖:被依赖的资源如果依赖于其他资源,那么当前项目间接依赖于其他资源。
依赖传递冲突
-
路径优先:当依赖中出现相同的资源时,层级越深优先级越低,层级越浅,优先级越高
-
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
-
特殊优先:当同级出现了相同资源的不同版本,后配置的覆盖先配置的
-
总结:比较时哪个先出现先用哪个
可选依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
<optional>true</optional>
</dependency>
排除依赖
<dependency>
<groupId>org.example</groupId>
<!--项目名称-->
<artifactId>untitled1</artifactId>
<version>1.0-SNAPSHOT</version>
//排除包含
<exclusions>
//具体排除的依赖
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions> </dependency>
依赖的范围
-
依赖的jar默认可以在任何地方使用,可以通过scope标签设定其作用的范围
-
作用范围
-
主程序范围内有效(main文件范围内)
-
测试程序范围内有效(test文件范围内)
-
是否参与打包(package指令范围内)
依赖范围的传递性
-
带有依赖范围的资源在传递的时候,作用的范围将受到影响
-
行中为直接依赖选项,列为间接依赖的选项 08
项目的构建生命周期
项目的构建生命周期 Maven对项目构建生命周期分为三个阶段,不同阶段有不同的过程事件 clean:清理工作 1.pre-clean :执行一些需要在clean之前完成的工作 2.clean:移除上一次构建生成的文件
3.post-clean:执行一些在clean之后立即完成的工作
defult:核心工作,例如编译,测试,打包,部署等
site:产生报告,发布站点
1.pre-site:执行一些在生成站点文件前要完成的工作 2.site:生成项目的站点文件
3.post-site:执行一些需要在生成站点文件后完成的工作,为部署做准备
09
插件
插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应插件功能
默认Maven的各个生命周期上绑定有预定的预设功能
通过插件可以自定义其他功能
<!--具体插件:对test区域源代码的打jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId><version>3.2.0</version>
<!--插件的行为-->
<executions><!--具体行为-->
<execution>
<goals>
<!--目标:执行的结果,这里时打jar包,并未所有的插件都有--><goal>jar</goal>
<!--可以打多个jar包--><goal>test-jar</goal>
</goals>
<!--在哪个阶段执行-->
<phase>generate-test-sources</phase></execution>
</executions></plugin>
- 英雄联盟手游3.4版本新英雄介绍 lol手游3.4新英雄有哪些 01-10
- lol手游3.4版本英雄调整介绍 英雄联盟手游3.4英雄调整有哪些 01-10
- 英雄联盟手游3.4版本新装备汇总 lol手游3.4版本新装备是什么 01-10
- 风来之国菜谱最新2022 风来之国菜谱大全 01-10
- 少女战争兑换码最新2022 少女战争兑换码大全 01-10
- 战神新世纪兑换码最新2022 战神新世纪兑换码大全 01-10
- 抖音喵了个喵小程序入口地址 喵了个喵游戏入口 01-10
- 抖音贱猫消消游戏入口 贱猫消消小游戏入口在哪 01-10
- 王者荣耀新赛季s29赛季皮肤介绍 王者荣耀新赛季s29赛季皮肤是谁的 01-10