Maven用来简化项目构建,采用不同的方式对项目构建进行抽象。
例如:源文件放在src/main/java下
配置文件放在src/main/resouces
编译好的文件放在target文件目录下。
Maven主要实现以下目标:
1,使项目构建变得容易。
2,同意项目构建方式。
3,提出一套项目开发实践。
4,包含不同环境项目的构建方式。
5,解决类库的依赖问题。
pom.xml是Maven的核心。
最简单的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>
<groupId>com.example</groupId>
<artifactId>springbootdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springbootdemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
pom通常有以下几种元素:
groupId:项目所属的组,公司或组织的名称,
artifactId:项目唯一标识 spring-boot-starter-web spring-boot-devtools
groupId和artifactId能唯一标识一个项目或者一个库,我们通常称之为项目坐标
packaging:项目的类型,常用的有jar和war两种,jar表示项目会打包成一个jar包,这是Spring Boot项目的默认使用方式。
version:项目的版本号
modleVersion:代表pom文件的Maven的版本
dependencies:这个元素下包含多个dependency用来声明项目的依赖,这是pom的最核心部分。
dependency:包含在dependencies中用来声明依赖
如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
scope:此类与项目的关系:默认是compile,编译和打包都需要此类
test:只在测试时使用此类
provided:编译阶段需要此类,而在打包阶段不需要此类
runtime:只在运行时需要。