侧边栏

Maven

1.Maven简介

官方的解释:

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven两大核心

  1. 依赖管理:就是对jar包的统一管理
  2. 构建项目:项目编码完成后,对项目的编译,测试,打包,部署等操作
    初学的时候对Maven的概念比较模糊,仅仅知道它可以管理我们的jar包和jar之间的依赖关系,但它的功能并不仅仅局限于此。我们通过安装使用管理来体验吧。

2.Maven的安装配置

2.1 官网下载

官网地址:https://maven.apache.org/download.cgi

下载Windows版本即可

1675666132664

2.2 解压缩

将下载的压缩文件解压缩到非中文目录下即可。

1675666202221

2.3 配置Maven的环境变量

先配置MAVEN_HOME

1675666321214

然后将MAVEN_HOME追加到path变量之后

1675666358502

2.4 验证

环境变量配置好后,我们就可以在系统的任意位置来使用Maven了

1675666412734

3.仓库类型介绍

仓库类型 说明
本地仓库 程序员自己电脑上的仓库
私服仓库 局域网中的仓库 速度比中央仓库要快
中央仓库 在互联网中,由Apache团队维护,包含了基本所有的jar包,版权原因不包含Oracle的

jar包查找的顺序:

1675666598732

中央仓库地址:https://mvnrepository.com

注意:在中央仓库找到jar包就会下载到本地仓库,下次再用的时候就会从查找本地仓库,很快捷

4.本地仓库配置

修改我们在Maven的配置文件

image-20230214155552919

image-20230214155909080

修改中央仓库的地址

<!-- 
	阿里代理镜像地址
	以后maven在本地仓库没有找到的jar包就会去阿里云代理镜像地址的这个中央仓库中去找
-->
<mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>*</mirrorOf>
</mirror>

4.创建基于Maven的Web项目

选择相关的类型

image-20230214164857111

设置项目的相关信息

image-20230214165150565

image-20230214165355384

image-20230214165546946

创建缺少的目录

image-20230214170031492

image-20230214170246616

Tomcat插件配置

<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>
		<port>8080</port> <!-- 访问端口-->
		<path>/</path> <!-- 访问路径-->
	</configuration>
</plugin>

启动tomcat

image-20230214170642671

image-20230214171024861

image-20230214171302624

5.依赖管理

Maven项目,依赖,构建配置,以及构件:所有这些都是要建模和表述的对象。这些对象通过一个 名为项目对象模型(Project Object Model, POM)的XML文件描述。这个POM告诉Maven它正处理什么类型的项目,如何修改默认的行为来从源码生成输出。同样的方式,一个Java Web应用有一个web.xml文 件来描述,配置,及自定义该应用,一个Maven项目则通过一个 pom.xml文件定义。该文件是Maven中一个项目的描述性陈述;也是当Maven构建项目的时候需要理解的一份“地图”。

5.1 Maven坐标

<dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
		<scope>test</scope>
	</dependency>
</dependencies>

<!-- 
1.在dependencies标签中添加需要添加的jar包对应的Maven坐标。

2.一个dependency标签代表了一个Maven坐标。

3.groupId:团体、公司、小组、项目、或其他团体标识的体现,约定以创建这个项目的组织域名(比如:www.baidu.com,这就是域名)倒写开头。也是我们在本地仓库中查看依赖的目录结构。一个Maven坐标中是必须有的。

4.artifactId:在groupId下的表示一个单独的项目的唯一标识。同样是必须的。

5.version:一个项目的特定版本。也是必须的
--> 

注意

scope代表依赖范围

依赖范围 编译有效 测试有效 运行时有效 打包有效 例子
Complie spring-core
test × × × Junit
provided × × servlet-api
runtime × JDBC驱动
system × × 本地maven仓库之外的类

5.2 依赖冲突

image-20230215083447836

image-20230215083900974

5.3 依赖冲突的解决

第一优先声明原则

谁先定义的就使用谁的

image-20230215084252900

image-20230215084402323

路径就近原则

直接声明,那么优先级会更高

image-20230215084758338

排除依赖

可以通过exclusions标签来排除依赖

image-20230215085241671

6.聚合工程

聚合工程,实际上就是对项目分模块,互联网项目一般按照业务来分(订单模块,支付模块,.......),传统项目,大多采用分层的方式(controller,service,dao)

6.1 聚合工程的结构

darksnow-parent 		pom(顶级父工程,管理)  ---  project
    darksnow-manager	pom		---   module
    	darksnow-manager-dao			jar
    	darksnow-manager-service		jar
    	darksnow-manager-model			jar
    	darksnow-manager-commons		jar
    	darksnow-manager-controller		war

image-20230215092811076

image-20230215092932858

image-20230215094526128

image-20230215094620160

posted @ 2023-04-12 22:24  lkjlwq  阅读(60)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css