首页 > 代码库 > POM (Project Object Model)简介

POM (Project Object Model)简介

  1  概念介绍

    一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。比如说,你可以配置 compiler 插件让它使用 java1.5 来编译。

[html] view plain copy
print?技术分享技术分享
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.    <modelVersion>4.0.0</modelVersion>   
  4.   
  5.    <groupId>com.mycompany.helloworld</groupId>   
  6.    <artifactId>helloworld</artifactId>   
  7.    <version>1.0-SNAPSHOT</version>   
  8.    <packaging>jar</packaging>   
  9.   
  10.    <name>helloworld</name>   
  11.    <url>http://maven.apache.org</url>   
  12.   
  13.    <properties>   
  14.      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   
  15.    </properties>   
  16.   
  17.    <dependencies>  
  18.      <dependency>   
  19.        <groupId>junit</groupId>   
  20.        <artifactId>junit</artifactId>   
  21.        <version>3.8.1</version>   
  22.        <scope>test</scope>   
  23.      </dependency>   
  24.    </dependencies>   
  25.   </project>      
技术分享

    在 POM 中,groupId,artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个构件。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。


    技术分享


    通常,大项目一般会分成几个子项目。在这种情况下,每个子项目就会有自己的 POM 文件,然后它们会有一个共同的父项目。这样只要构建父项目就能够构建所有的子项目了。子项目的 POM 会继承父项目的 POM。另外,所有的 POM都继承了一个 Super-POM。Super-POM 设置了一些默认值,比如在前面提到的默认的目录结构,默认的插件等等,它遵循了惯例优于配置的原则。如下图:


    技术分享


  2  Pom文件的继承与聚合

  继承

    开发中一般将公共的配置——依赖关系(包括公共的类库、插件、信息配置)放到一个父项目的pom文件,然后其它项目的pom文件,都继承该pom文件。继承的代码如下:


    技术分享


    这里需要注意,子pom文件不是一旦继承了父pom就会无条件地继承它所有的依赖关系,即插件、类库等。如果子pom想继承父pom的某个插件,只需要引入父pom中该插件的groupId与artifactId信息(不用写该插件其它的配置信息)即可。这样子pom是可以有选择性的继承它自己所需要的东西。


    技术分享


  聚合

    即大项目中一般会有一个空的Maven项目(只有pom文件,没有Java代码)作为父项目,该项目的Pom文件(Modules标签中)聚合了其它子项目的Pom文件,然后只要构建父项目就能够构建所有的子项目了。


    技术分享



来自为知笔记(Wiz)


POM (Project Object Model)简介