转:Maven pom文件常用配置小结

Maven pom文件常用配置小结

什么是POM

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

 

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

  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">
  4.0.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

基本设置

maven的协作相关属性

  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">
  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
POM之间的关系

主要用于POM文件的复用。

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

 
   
      junit
      junit
      4.0
      test
   

    …
 

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

继承关系:继承其他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

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

  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">
  4.0.0
  org.codehaus.mojo
  my-parent
  2.0
 
    my-project
 

属性

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}

构建设置

构建有两种build标签:

  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">
  …
 
 
 
   
     
     
   

 

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
       

       
       
     

转载于:https://www.cnblogs.com/phoebus0501/archive/2011/01/26/1945374.html

你可能感兴趣的:(转:Maven pom文件常用配置小结)