1.Maven简介
官方的解释:
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven两大核心:
- 依赖管理:就是对jar包的统一管理
- 构建项目:项目编码完成后,对项目的编译,测试,打包,部署等操作
初学的时候对Maven的概念比较模糊,仅仅知道它可以管理我们的jar包和jar之间的依赖关系,但它的功能并不仅仅局限于此。我们通过安装使用管理来体验吧。
2.Maven的安装配置
2.1 官网下载
官网地址:https://maven.apache.org/download.cgi
下载Windows版本即可
2.2 解压缩
将下载的压缩文件解压缩到非中文目录下即可。
2.3 配置Maven的环境变量
先配置MAVEN_HOME
然后将MAVEN_HOME追加到path变量之后
2.4 验证
环境变量配置好后,我们就可以在系统的任意位置来使用Maven了
3.仓库类型介绍
仓库类型 | 说明 |
---|---|
本地仓库 | 程序员自己电脑上的仓库 |
私服仓库 | 局域网中的仓库 速度比中央仓库要快 |
中央仓库 | 在互联网中,由Apache团队维护,包含了基本所有的jar包,版权原因不包含Oracle的 |
jar包查找的顺序:
中央仓库地址:https://mvnrepository.com
注意:在中央仓库找到jar包就会下载到本地仓库,下次再用的时候就会从查找本地仓库,很快捷
4.本地仓库配置
修改我们在Maven的配置文件
修改中央仓库的地址
<!--
阿里代理镜像地址
以后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项目
选择相关的类型
设置项目的相关信息
创建缺少的目录
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
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 依赖冲突
5.3 依赖冲突的解决
第一优先声明原则
谁先定义的就使用谁的
路径就近原则
直接声明,那么优先级会更高
排除依赖
可以通过exclusions标签来排除依赖
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
标签:依赖,项目,仓库,jar,darksnow,Maven
From: https://www.cnblogs.com/lkj1223456/p/17311567.html