pom.xml详解

一、什么是POM

Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。

一个完整的pom.xml文件,放置在项目的根目录下。


  4.0.0
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

二、基本设置

1、maven的协作相关属性


  4.0.0
  org.codehaus.mojo
  my-project
  1.0
  war
  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

2、POM之间的关系

主要用于POM文件的复用。

a)依赖关系:依赖关系列表(dependency list)是POM的重要部分

 
    
      junit
      junit
      4.0
      test
    
  1. groupId , artifactId , version :
  2. scope : compile(default),provided,runtime,test,system
  3. exclusions

b)继承关系:继承其他pom.xml配置的机制。

比如父pom.xml:


  [...]
  
    
      junit
      junit
      4.4
      test
    
  
  [...]
在子pom.xml文件继承它的依赖(还可以继承其他的:developers and contributors、plugin lists、reports lists、plugin executions with matching ids、plugin configuration):
[...]

com.devzuz.mvnbook.proficio
  proficio
  1.0-SNAPSHOT

[...]
在这种机制下,maven还提供了一个类似java.lang.Object的顶级父pom.xml文件:

  4.0.0
  Maven Default Project
  
    
      central
      Maven Repository Switchboard
      default
      http://repo1.maven.org/maven2
      
        false
      
    
  
  
    
      central
      Maven Plugin Repository
      http://repo1.maven.org/maven2
      default
      
        false
      
      
        never
      
    
  
  
    target
    target/classes
    ${project.artifactId}-${project.version}
    target/test-classes
    src/main/java
    src/main/scripts
    src/test/java
    
      
        src/main/resources
      
    
    
      
        src/test/resources
      
    
    
       
         
           maven-antrun-plugin
           1.1
               
         
           maven-assembly-plugin
           2.2-beta-2
         
         
           maven-clean-plugin
           2.2
         
         
           maven-compiler-plugin
           2.0.2
         
         
           maven-dependency-plugin
           2.0
         
         
           maven-deploy-plugin
           2.3
         
         
           maven-ear-plugin
           2.3.1
         
         
           maven-ejb-plugin
           2.1
         
         
           maven-install-plugin
           2.2
         
         
           maven-jar-plugin
           2.2
         
         
           maven-javadoc-plugin
           2.4
         
         
           maven-plugin-plugin
           2.4.1
         
         
           maven-rar-plugin
           2.2
         
                        
           maven-release-plugin
           2.0-beta-7
         
                        
           maven-resources-plugin
           2.2
         
         
           maven-site-plugin
           2.0-beta-6
         
         
           maven-source-plugin
           2.0.4
                  
         
            maven-surefire-plugin
            2.4.2
         
         
           maven-war-plugin
           2.1-alpha-1
         
       
     
  
  
    target/site
  
  
    
      release-profile
      
        
          performRelease
          true
        
      
      
        
          
            true
            org.apache.maven.plugins
            maven-source-plugin
            
              
                attach-sources
                
                  jar
                
              
            
          
          
            true
            org.apache.maven.plugins
            maven-javadoc-plugin
            
              
                attach-javadocs
                
                  jar
                
              
            
          
          
            true
            org.apache.maven.plugins
            maven-deploy-plugin
            
              true
            
          
        
      
    
  
可以通过下面命令查看当前pom.xml受到超pom.xml文件的影响:
mvn help:effective-pom

c)聚合关系:用于将多个maven项目聚合为一个大的项目。


  4.0.0
  org.codehaus.mojo
  my-parent
  2.0
  
    my-project
  

3、属性

maven的属性,是值的占位符,类似EL,类似ant的属性,比如${X},可用于pom文件任何赋值的位置。有以下分类:

  1. env.X:操作系统环境变量,比如${env.PATH}
  2. project.x:pom文件中的属性,比如:1.0,引用方式:${project.version}
  3. settings.x:settings.xml文件中的属性,比如:false,引用方式:${settings.offline}
  4. Java System Properties:java.lang.System.getProperties()中的属性,比如java.home,引用方式:${java.home}
  5. 自定义:在pom文件中可以:c:/apps/cargo-installs,引用方式:${installDir}

4、构建设置

构建有两种build标签:


  
  
    
      
      
    
  

build中的主要标签:Resources和Plugins。

Resources:用于排除或包含某些资源文件

    
      
        META-INF/plexus
        false
        ${basedir}/src/main/plexus
        
          configuration.xml
        
        
          **/*.properties
        
      
    
Plugins:设置构建的插件
 
      
        org.apache.maven.plugins
        maven-jar-plugin
        2.0
        false
        true
        
          test
        
        
        
      
































































你可能感兴趣的:(java,框架,Java,扫盲,java,Web,扫盲系列)