什么是Pom
Pom是项目对象模型(Project Object Model),它是Maven项目中的文件,表示的不仅仅是一堆包含代码的文件。还包含了与开发有关的组织,项目url,项目依赖,以及其他。而且一个project可以仅包含pom.xml
Pom 基本设置
<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>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
</project>
其中的modelVersion是4.0.0,这是当前仅有的可以被Maven2&3同时支持的POM版本
理解:
1.groupId: 项目标识,例如:org.codehaus.mojo,在M2_REPO目录下,将是:org/codehaus/mojo目录。
2.artifactId: 模块名称,例如:my-project,在M2_REPO目录下,将是:org/codehaus/mojo/my-project目录。
3.version: 版本号,例如:1.0,在M2_REPO目录下,将是:org/codehaus/mojo/my-project/1.0目录。
4.packaging: 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear, rar , par
Pom 之间关系
与uml中对象关系是一致的,有依赖,继承,关联。主要用于pom文件的复用
依赖关系:
依赖关系列表(dependency list)是重要部分
<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>com.tgb</groupId>
<artifactId>itoo-exam-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../itoo-exam-parent/pom.xml</relativePath>
</parent>
<artifactId>itoo-exam-questionbankmanage-core</artifactId>
<packaging>ejb</packaging>
<!--依赖关系-->
<dependencies>
<dependency>
<groupId>com.tgb</groupId>
<artifactId>itoo-base</artifactId>
</dependency>
<dependency>
<groupId>com.tgb</groupId>
<artifactId>itoo-tool</artifactId>
</dependency>
<dependency>
<groupId>com.tgb</groupId>
<artifactId>itoo-exam-api</artifactId>
</dependency>
<dependency>
<groupId>com.tgb</groupId>
<artifactId>itoo-exam-base</artifactId>
</dependency>
<dependency>
<groupId>com.tgb</groupId>
<artifactId>itoo-exam-tool</artifactId>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
</dependency>
</dependencies>
</project>
理解:
1.groupId ,artifactId , version :
2.scope:(依赖范围)compile(default),provided,runtime,test,system
3.exclusions
继承关系:
继承其他pom.xml配置机制如:
父pom文件
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId> account-parent </artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Account Parent</name>
</project>
子模块声明继承如下
<project>
<modelVersion>4.0.0</modelVersion>
< parent >
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId> account-parent </artifactId>
<version>1.0.0-SNAPSHOT</version>
< relativePath >../account-parent/pom.xml</ relativePath>
</ parent >
<artifactId> account-email </artifactId>
<name>Account Email</name>
</project>
这里我们看到子模块没有声明groupid和version,这两个属性继承至父模块。但如果子模块有不同与父模块的 groupId、version ,也可指定;同时不应该继承artifactId,如果groupId ,version,artifactId 完全继承的话会造成坐标冲突;
聚合关系:
用于将多个maven项目聚合为一个大项目,这样构建一个项目就可以将整个项目构建完成
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<modules>
<module>my-project<module>//聚合项目
<module>account-email</module>
</modules>
</project>
maven的属性:
maven属性是值的占位符,类似EL,用于pom文件的任何位置。
1.env.X:操作系统环境变量,比如${env.PATH}
2.project.x:pom文件中的属性,比如:<project><version>1.0</version></project>,引用方式:${project.version}
3 .自定义:在pom文件中可以::<properties><installDir>c:/apps/cargo-installs</installDir></properties>,引用方式:${installDir}
小结:
pom.xml 文件是maven对一个项目的核心配置,这个文件将包含你希望如何构建项目的大多数配置信息。POM大而复杂,我们不用全部去了解,只要使用一些常用的配置就可以了。以上的为基本的配置和语法,希望对大家有所帮助。