标签:maven
什么是Pom
Pom是项目对象模型(Project Object Model),它是Maven项目中的文件,表示的不仅仅是一堆包含代码的文件。还包含了与开发有关的组织,项目url,项目依赖,以及其他。而且一个project可以仅包含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>...</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
与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属性是值的占位符,类似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大而复杂,我们不用全部去了解,只要使用一些常用的配置就可以了。以上的为基本的配置和语法,希望对大家有所帮助。
标签:maven
原文地址:http://blog.csdn.net/han_yankun2009/article/details/43820801