maven之pom.xml配置文件详解

一、什么是pom
pom代表项目对象模型,它是Maven中工作的基本组成单位。它是一个XML文件,始终保存在项目的基本目录中的pom.xml文件中。pom包含的对象是使用maven来构建的,pom.xml文件包含了项目的各种配置信息。 创建一个POM之前,应该要先决定项目组(groupId),项目名(artifactId)和版本(version),因为这些属性在项目仓库是唯一标识的。需要特别注意,每个项目都只有一个pom.xml文件。

二、pom中的节点分布如下


    4.0.0

    
    ...
    ...
    ...
    ...


    
    ...
    ...
    ...
    ...
    ...

    
    ...
    ...

    
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...

    
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...

三、各节点解释说明
1.基本配置信息


   
   4.0.0
   
   com.company.bank
   
   parent
   
   1.0
   
   war

节点 解释说明
modelVersion pom模型版本,maven2和3只能为4.0.0
groupId 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团com.company.bank拥有所有银行相关项目。
artifactId 这是项目的ID。这通常是项目的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在存储库中的位置。
version 这是项目的版本。与groupId一起使用,artifact在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0,com.company.bank:consumer-banking:1.1
packaging 项目打包方式,有以下值:pom, jar, maven-plugin, ejb, war, ear, rar, par

2.依赖配置
(1) dependencies
项目相关依赖配置,如果在父项目写的依赖,会被子项目引用。一般会在父项目中定义子项目中所有共用的依赖。


    
            junit
            junit
            4.12
    

(2)parent
用于确定父项目的坐标位置。


    com.learnPro
    SIP-parent
    
    0.0.1-SNAPSHOT

  • groupId: 父项目的组Id标识符
  • artifactId:父项目的唯一标识符
  • relativePath:Maven首先在当前项目中找父项目的pom,然后在文件系统的这个位置(relativePath),然后在本地仓库,再在远程仓库找。
  • version: 父项目的版本

(3) modules
有些maven项目会做成多模块的,这个标签用于指定当前项目所包含的所有模块。之后对这个项目进行的maven操作,会让所有子模块也进行相同操作。


   com-a
   com-b
   com-c

(4) properties
用于定义pom常量


    1.7

上面这个常量可以在pom文件的任意地方通过${Java.version}来引用

(5)dependencyManagement
配置写法同dependencies


    
    .....
    

在父模块中定义后,子模块不会直接使用对应依赖,但是在使用相同依赖的时候可以不加版本号,这样的好处是,父项目统一了版本,而且子项目可以在需要的时候才引用对应的依赖。

父项目:

    
        
            junit
            junit
            4.12
            test
        
    


子项目:


    junit
    junit

3.构建配置

    
        
        
        
      
      
      
      
      
      
      
      
      
       
       
        
        
        
        
        
        
       
      
      
      
      
      
       
       
        
        
        
        
        
        
        
        
        
        
       
      
      
      
       
       
        
       
      
      
      
      
      
      
      
      
      
       
       
        
        
         
         
         
         
         
         
         
         
         
         
          
          
           
           
           
           
           
           
           
           
           
           
          
         
         
         
          
          
       ......    
          
              
         
         
         
         
        
       
      
      
      
       
       
        
        
         
          
         
        
        
         
         
      ......    
         
        
        
       
      
 
  1. reporting
    该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接。
    
      
      
      
      
      
      
       
       
        
        
        
        
        
        
        
        
        
        
        
        
         
         
          
          
          
          
          
          
          
          
         
        
       
      
 

5.项目信息

  • name:给用户提供更为友好的项目名
  • description:项目描述,maven文档中保存
  • url:主页的URL,maven文档中保存
  • inceptionYear:项目创建年份,4位数字。当产生版权信息时需要使用这个值
  • licenses:该元素描述了项目所有License列表。 应该只列出该项目的-
  • license列表,不要列出依赖项目的 license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license。(如下)
    
        
    ...     
        
    ....
        
    repo     
        
    ....     

  • organization:1.name 组织名 2.url 组织主页url
  • developers:项目开发人员列表(如下)
  • contributors:项目其他贡献者列表,同developers
  
    
      
        
        ....  
        
        ...  
        
        ...  
        
        ...
        
          
            Java Dev  
            Web UI  
         
         
        sun  
        
        ...  
        
        
            
         
         
        -5  
      
  

6.环境配置
issueManagement
目的问题管理系统(Bugzilla, Jira, Scarab)的名称和URL


    Bugzilla
    http://127.0.0.1/bugzilla/

ciManagement
项目的持续集成信息

 
    continuum
    http://127.0.0.1:8080/continuum
    
      
        mail
        true
        true
        false
        false
        
[email protected]
  • system:持续集成系统的名字
  • url:持续集成系统的URL
  • notifiers:构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告)
    type:通知方式
    sendOnError:错误时是否通知
    sendOnFailure:失败时是否通知
    sendOnSuccess:成功时是否通知
    sendOnWarning:警告时是否通知
    address:通知发送到的地址
    configuration:扩展项

mailingLists
项目相关邮件列表信息


    
      User List
      [email protected]
      [email protected]
      [email protected]
      http://127.0.0.1/user/
      
        http://base.google.com/base/1/127.0.0.1
      
    
    .....
  
  • subscribe, unsubscribe: 订阅邮件(取消订阅)的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建
  • archive:浏览邮件信息的URL
  • post:接收邮件的地址

scm
许你配置你的代码库,供Maven web站点和其它插件使用


    scm:svn:http://127.0.0.1/svn/my-project
    scm:svn:https://127.0.0.1/svn/my-project
    HEAD
    http://127.0.0.1/websvn/my-project
  
  • connection, developerConnection:这两个表示我们如何连接到maven的版本库。connection只提供读,developerConnection将提供写的请求
    写法如:scm:[provider]:[provider_specific]
    如果连接到CVS仓库,可以配置如下:-
  • scm:cvs:pserver:127.0.0.1:/cvs/root:my-project
  • tag:项目标签,默认HEAD
  • url:共有仓库路径

prerequisites
项目构建的前提


    2.0.6

repositories,pluginRepositories
依赖和扩展的远程仓库列表,同上篇文章,setting.xml配置中介绍的。


    
      
        false
        always
        warn
      
      
        true
        never
        fail
      
      codehausSnapshots
      Codehaus Snapshots
      http://snapshots.maven.codehaus.org/maven2
      default
    
  
  
    ...
  
  • releases, snapshots:这是各种构件的策略,release或者snapshot。这两个集合,POM就可以根据独立仓库任意类型的依赖改变策略。如:一个人可能只激活下载snapshot用来开发。
  • enable:true或者false,决定仓库是否对于各自的类型激活(release 或者 snapshot)。
  • updatePolicy: 这个元素决定更新频率。maven将比较本地pom的时间戳(存储在仓库的maven数据文件中)和远程的. 有以下选择: always, daily (默认), interval:X (x是代表分钟的整型) , never.
  • checksumPolicy:当Maven向仓库部署文件的时候,它也部署了相应的校验和文件。可选的为:ignore,fail,warn,或者不正确的校验和。
  • layout:在上面描述仓库的时候,提到他们有统一的布局。Maven 2有它仓库默认布局。然而,Maven 1.x有不同布局。使用这个元素来表明它是default还是legacy。

你可能感兴趣的:(maven之pom.xml配置文件详解)