Maven使用详解
1、maven介绍:
2、pom.xml文件理解:
<?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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.google</groupId> <artifactId>aibaiyang</artifactId> <version>0.0.1-SNAPSHOT</version> <name>aibaiyang</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
代码第一行是XML头,指定了改xml的版本和编码格式。紧接着是project元素,project元素是所有pom.xml的根元素,它声明了一些POM相关的命名空间及xsd元素。
modelVersion:指定了当前POM模型的版本,对于maven2以及maven3来说,它只能是4.0.0。
groupId、artifactId、version:这三个元素定义了一个项目的基本坐标,groupId定义了项目属于哪个组,例如google公司的myapp项目,那么groupId就应该是com.google.myapp;artifactId定义了Maven项目中组的唯一id,例如myapp-domain,myapp-serveice,myapp-web。
version:项目当前的版本号,0.0.1-SNAPSHOT是该项目的版本号。
name:声明了一个对于用户更为友好的项目名称,以方便信息交流,不是必须的。
3、坐标和依赖:
groupId:
artifactId:该元素定义实际项目中的一个Maven项目(模块),推荐的做法是使用实际的项目名称作为artifactId的前缀。这样做的好处是方便寻找实际的构件,使用实际的项目名称作为前缀之后,就能方便从一个lib文件夹中找到某个项目的一组构件。
version:该元素定义了Maven项目当前所处的版本。
packaging :该元素定义了Maven项目的打包方式,打包方式与所生成的构件的文件扩展名相对应。
3.1、依赖配置:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>RELEASE</version>
<type>jar</type>
<scope>runtime</scope>
<optional>false</optional>
<exclusions>
<exclusion> </exclusion>
</exclusions>
</dependency>
</dependencies>
groupId、artifactId、version:依赖坐标
type:依赖类型,对应项目坐标定义的packaging。大部分情况下该元素不必声明,其默认值为jar
socpe:依赖范围
optional:标记依赖是否可选
exclusions:用来排除传递性依赖
3.2、依赖范围:
compile:编译依赖氛围。没有指定,就会默认使用该依赖范围。
test:测试依赖范围。
provided:已提供依赖范围,编译和测试有效,但在运行时无效。
runtime:运行时依赖范围。编译无效,测试和运行时有效。
system:系统依赖范围,和provided依赖范围一致。
import:导入依赖范围。

3.3、传递性依赖:

浙公网安备 33010602011771号