maven基础配置和相关概念
1、 pom文件
简介:pom文件是maven管理项目信息的配置文件,可配置项目信息,管理jar、插件等
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--模型版本maven2.0必须是这样写-->
<modelVersion>4.0.0</modelVersion>
<!--项目的唯一标识符,对应的式java的包目录-->
<groupId>com.guo.gui</groupId>
<!--项目的标识,对应项目根目录的名称-->
<artifactId>SourceCode</artifactId>
<!--项目的版本-->
<version>1.0-SNAPSHOT</version>
<!--项目名称-->
<name>SourceCode</name>
<!--jar包管理,配置依赖的jar包。maven通过此配置项,从仓库中查找下载相应的jar包-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2、setting文件
简介:设置maven参数相关的配置文件
功能:配置maven仓库、http代理、权限控制等
3、maven项目结构
可使用Archetype插件生成基本的maven项目
IDEA中创建:file->new->project->maven
选用常用的插件:maven-archetype-quickstart
生成后的maven项目应该包含四个目录
src/main/java
src/main/resources
src/test/java
src/main/ resources
如果未完全生成以上目录,可根据需要添加
4、maven常用命令
编译命令 mvn clean compile
测试命令 mvn clean test
打包命令 mvn clean package
安装命令 mvn clean install
5、maven聚合
如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合
pom文件中增加如下配置
<modules>
<module>../demo1</module>
<module>../demo2</module>
<module>../demo3</module>
</modules>
6、maven继承
继承为了消除重复,我们把很多相同的配置提取出来,例如:grouptId,version等
<parent>
<groupId>me.gacl.maven</groupId>
<artifactId>ParentProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../ParentProject/pom.xml</relativePath>
</parent>
6.1 属性
继承代码过程中,可以定义属性
<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
<junit.version>4.9</junit.version>
<maven.version>0.0.1-SNAPSHOT</maven.version>
</properties>
6.2 使用属性
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
6.3 父模块用dependencyManagement进行管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
6.4 总结
聚合可以快速构建项目,继承可以消除重复
使用聚合和继承可构建多模块应用
7、maven依赖
7.1 依赖管理
几乎任何java应用都会借用一些第三方的开源类库,这些类库都可以通过配置引入到项目中,示例如下
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
7.2 依赖范围(scope)
maven 项目不同的阶段引入到classpath中的依赖是不同的,例如,编译、测试、运行时需要引入的jar是不同的,而依赖范围可以控制jar的使用环境
compile:编译依赖范围,适用于编译、测试、运行
test:测试依赖范围,适用于测试
provided:已提供依赖范围,适用于编译、测试
runtime:运行时依赖范围,适用于运行
system:系统依赖范围,适用于编译、测试
import:导入依赖范围,配合dependencyManagement使用
7.3 依赖类型(type)
7.4 依赖的传递
7.5 依赖的排除
如果有多个依赖引用了同一个第三方依赖,可能会出现版本冲突等问题,此时可排除指定jar包解决冲突问题
<dependencies>
<dependency>
<groupId>XXX</groupId>
<artifactId>XXX</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- 指定要排除的依赖项 -->
<groupId>XXX</groupId>
<artifactId> XXX </artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>