Maven核心概念 pom.xml

Maven核心:pom.xml

POM:Project Object Model,项目对象模型。和 POM 类似的是:DOM(Document Object Model),文档对象模型。它们都是模型化思想的具体体现

Maven中的坐标

maven通过 groupId、artifactId与version来确定唯一一个jar包

  • groupId:公司或组织的 id
  • artifactId:一个项目或者是项目中的一个模块的 id
    • Maven 工程的工程名
  • version:版本号
    • SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本,RELEASE 表示正式版本

例如

  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <!-- servlet-api.jar包位于: Maven本地仓库根目录\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar -->
  <groupId>com.公司名.工程名</groupId>
  <artifactId>项目名</artifactId>
  <version>1.0</version>

maven仓库地址: https://mvnrepository.com/

Maven 依赖范围

Maven是通过坐标来引入jar包的,再引入时,可以指定这个jar包的作用范围。maven的默认依赖范围是complie。maven

   <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.20</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

Maven的依赖范围包括: compile,provide,runtime,test,system,import。

compile:表示编译范围,指A在编译时依赖B,该范围为默认依赖范围。编译范围的依赖会用在编译,测试,运行,由于运行时需要,所以编译范围的依赖会被打包。

provided:provied依赖只有当jdk或者一个容器已提供该依赖之后才使用。provide依赖在编译和测试时需要,在运行时不需要。例如:servlet api被Tomcat容器提供了。

runtime:runtime依赖在运行和测试系统时需要,但在编译时不需要。例如:jdbc的驱动包。由于运行时需要,所以runtime范围的依赖会被打包。

test:test范围依赖在编译和运行时都不需要,只在测试编译和测试运行时需要。例如:Junit。由于运行时不需要,所以test范围依赖不会被打包。

system:system范围依赖与provide类似,但是必须显示的提供一个对于本地系统中jar文件的路径。一般不推荐使用。

import:maven依赖是单继承,import依赖范围是与dependencyManagement元素配合使用,为将目标pom文件中dependencyManagement的配置导入合并到当前pom的dependencyManagement中.

依赖范围编译测试运行时是否会被打入jar包
compile
provided××
runtime×
test×××
system×
import×××

可选依赖

可选依赖表示这个依赖不是必须的。通过在中添 加true 表示,默认是不可选的。可选依赖不会被传递。

maven系统变量

<properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--项目构建使用的编码,避免中文乱码-->
 <maven.compiler.source>1.8</maven.compiler.source><!--源码编译 jdk 版本-->
 <maven.compiler.target>1.8</maven.compiler.target><!--运行代码的 jdk 版本-->
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--生成报告的编码-->
</properties>

Maven 依赖优先原则

第一原则:最短路径优先。

​ 一个项目M依赖了两个jar包,其中A-D(1.0) , A-B-D(2.0)。由于D(1.0)路径最短,所以项目使用的是D(1.0)。

第二原则:相同路径下配置在前的优先。

​ 在整个pom.xml中,如果依赖路径长度相同,那么先声明的依赖,就是使用的版本。M项目使用D 1.0版本

第三原则:覆盖优先原则

​ 子pom内声明的优先于父pom中的依赖。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值