1 使用maven的主要目的:完成自动化构建。
2 什么是POM,POM(即Project Object Model)是项目对象模型,主要通过pom.xml的配置描述项目信息,包括:项目名称、版本、项目id、项目的依赖关系、编译环境、持续集成、项目团队、贡献管理、生成报表等等。总之,它包含了所有的项目信息。
3 pom.xml的主要配置
3.1 pom.xml最基本配置信息
<projectxmlns="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>org.codehaus.mojo</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
其中:
modelVersion ---- 描述这个POM文件是遵从哪个版本的项目描述符.
groupId -----针对一个项目的普遍唯一识别符。通常用一个完全正确的包的名字来与其他项目的类似名字来进行区分(比如:org.apache.maven)
artifactId -----在给定groupID 的group里面为artifact 指定的标识符是唯一的 , artifact 代表的是被制作或者被一个project应用的组件(产出物)。
version -----当前项目产生的artifact的版本
以上4个元素缺一不可,其中groupId, artifactId, version描述依赖的项目唯一标志
3.2 pom.xml的文件结构
<project>
<modelVersion>4.0.0</modelVersion>#版本号
<!->
<groupId>...</groupId>#项目的普遍唯一标识符
<artifactId>...</artifactId>#在group里唯一的标识符
<version>...</version>#
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
<!->
<build>...</build>
<reporting>...</reporting>
<!-->
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
<!-- Environment Settings ->
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>
</project>
4 POM有3个重要的关系:依赖,继承,合成。
4.1 依赖
配置项目所依赖的jar包,可以配置多个依赖关系。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
</dependency>
...
</dependencies>
4.2 继承
在子项目中可以配置所继承的父pom,用于继承相同的配置。
通过<parent>元素来说明。
4.3 合成
一个项目有多个模块,也叫做多重模块,或者合成项目。配置方式:
<project>
……
<modules>
<module>my-child-project1<module>
<module>my-child-project2<module>
</modules>
</project>
5 属性
maven的属性,是值的占位符,类似EL,类似ant的属性,比如${X},可用于pom文件任何赋值的位置。有以下分类:
5.1 env.X:操作系统环境变量,比如${env.PATH}
5.2 project.x:pom文件中的属性,比如:<project><version>1.0</version></project>,引用方式:${project.version}
5.3 settings.x:settings.xml文件中的属性,比如:<settings><offline>false</offline></settings>,引用方式:${settings.offline}
5.4 Java System Properties:java.lang.System.getProperties()中的属性,比如java.home,引用方式:${java.home}
5.5 自定义:在pom文件中可以:<properties><installDir>c:/apps/cargo-installs</installDir></properties>,引用方式:${installDir}