一、文件结构
<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.mycompany.app</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>myapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
pom.xml文件的节点元素说明:
<project> pom文件的顶级节点
<modelVersion> object model版本,对Maven2和Maven3来说,只能是4.0.0
<groupId> 项目创建组织的标识符,一般是域名的倒写
<artifactId> 定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version> 当前项目的版本,SNAPSHOT,表示是快照版本,在开发中
<packaging> 打包的方式,有jar、war、ear等
<name> 项目的名称
<url> 项目的地址
<properties> 属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies> 构建项目依赖的jar
二、Maven坐标
组成:4个选项
groupId: 组织名
artifactId:项目名
version: 项目版本
packaging: 项目打包方式。jar 、war
maven坐标可以唯一标识一个构建的统一规范,从而把查找任务交给机器。
三、依赖管理
主要是说依赖配置中的scope标签。
<!--添加依赖配置-->
<dependencies>
<!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!--项目要使用到Hello的jar包,所以在这里添加Hello的jar包的依赖-->
<dependency>
<groupId>me.gacl.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
1.依赖范围:scope
用来控制 依赖和编译,测试,运行的classpath关系。
①.compile:默认比编译依赖范围。对于编译,测试,运行三种classpath都有效
②.test:测试依赖范围。只对于测试classpath有效
③.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
④.runtime:运行时提供。例如:jdbc驱动
四、生命周期。
Maven有3套独立的生命周期。
第一套:Clean Lifecycle 在构建之前进行清理工作。
第二套: Default Lifecycle 构建的核心部分,主要有编译,打包,测试,部署。
第三套: Site Lifecycle 生成项目报告、站点、发布站点。
说明:他们相互独立,可以只运行一套。default 周期是最重要的,它负责的内容最核心.比如校验,编译,打包等。