Maven三大功能:依赖管理、项目构建、项目知识管理;需要上项目最重要的功能是首先能用Maven正确添加需要的JAR(依赖管理)
classifier:用来帮助定义构建输出的一些附属构建;不能直接定义项目的classifier,因附属构建不是项目直接默认生成的,而是由附加的插件帮助生成。
pom.xml基础配置:
<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 指定POM的版本,对于maven2及maven3来说,它只能是4.0.0 -->
<modelVersion>4.0.0</modelVersion>
<!-- groupId、artifactId、version、package和classifier可唯一确定Maven坐标; -->
<!-- groupId 项目组的ID,一般是com.公司组织名.项目名 -->
<groupId>com.chensan.app</groupId>
<!-- artifactId 该项目在项目组中的ID -->
<artifactId>app-sample</artifactId>
<!-- version 是项目的版本号,用于维护项目的升级和发布;SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本 -->
<version>0.0.1-SNAPSHOT</version>
<!-- Maven项目的打包方式, 有jar、war、pom等方式, 默认打包方式jar -->
<packaging>jar</packaging>
<!-- name 一般没有实际的用处, 只是用于标识该项目, Maven产生的文档用 -->
<name>app-sample</name>
<!-- 项目主页的URL, Maven产生的文档用 -->
<url>http://maven.apache.org</url>
<!-- 依赖管理在下面依次会引入 -->
</project>
1. 依赖的配置
依赖可以包含的元素:
groupId,artifactId和version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖。 根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个依赖。
groupId,artifactId和version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖。 根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个依赖。
type: 依赖的类型,对应于项目坐标定义的packaging。大部分情况下,该元素不必声明,其默认值是jar
scope: 依赖的范围,下面会进行详解
optional: 标记依赖是否可选
exclusions: 用来排除传递性依赖,下面会进行详解
scope: 依赖的范围,下面会进行详解
optional: 标记依赖是否可选
exclusions: 用来排除传递性依赖,下面会进行详解
2. 依赖范围
Maven在编译、测试、运行时分别要使用一套classpath,依赖范围就是用来控制依赖与依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系。
Maven有四种依赖范围:
1) compile:编译依赖范围,如果没有指定依赖范围,则默认使用此依赖范围; 对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都使用该依赖;
2) test:测试依赖范围; 在编译主代码和运行项目时无法使用此类依赖。典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;
3) provided:已提供依赖范围,对于编译和测试classpath有效, 但在运行时无效;
4) runtime:运行时依赖范围,对于测