Maven Pom

目录

Pom

父(Super)POM

POM 标签大全详解


POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

Pom

执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

POM 中可以指定以下配置:

  • 项目依赖
  • 插件
  • 执行目标
  • 项目构建 profile
  • 项目版本
  • 项目开发者列表
  • 相关邮件列表信息

在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。


 
    
    4.0.0
    
    com.companyname.project-group
 
    
    project
 
    
    1.0

所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。

节点

描述

project

工程的根标签。

modelVersion

模型版本需要设置为 4.0。

groupId

这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织 com.companyname.project-group 拥有所有的和银行相关的项目。

artifactId

这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。

version

这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。例如:

com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1

父(Super)POM

父(Super)POM是 Maven 默认的 POM。所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 包含了一些可以被继承的默认设置。因此,当 Maven 发现需要下载 POM 中的 依赖时,它会到 Super POM 中配置的默认仓库 http://repo1.maven.org/maven2 去下载。

Maven 使用 effective pom(Super pom 加上工程自己的配置)来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置,当然这些配置可以被重写。

使用以下命令来查看 Super POM 默认配置:

mvn help:effective-pom

接下来我们创建目录 MVN/project,在该目录下创建 pom.xml,内容如下:


 
    
    4.0.0
    
    com.companyname.project-group
 
    
    project
 
    
    1.0

在命令控制台,进入 MVN/project 目录,执行以下命令:

C:\MVN\project>mvn help:effective-pom

Maven 将会开始处理并显示 effective-pom。

[INFO] Scanning for projects...
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:36 min
[INFO] Finished at: 2018-09-05T11:31:28+08:00
[INFO] Final Memory: 15M/149M
[INFO] ------------------------------------------------------------------------

 

Effective POM 的结果就像在控制台中显示的一样,经过继承、插值之后,使配置生效。








 






 

  4.0.0
  com.companyname.project-group
  project
  1.0
  
    C:\MVN\project\src\main\java
    src/main/scripts
    C:\MVN\project\src\test\java
    C:\MVN\project\target\classes
    C:\MVN\project\target\test-classes
    
      
        resource-0
        C:\MVN\project\src\main\resources
      
    
    
      
        resource-1
        C:\MVN\project\src\test\resources
      
    
    C:\MVN\project\target
    project-1.0
    
      
        
          maven-antrun-plugin
          1.3
        
        
          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.4
        
        
          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.5
        
        
          maven-plugin-plugin
          2.4.3
        
        
          maven-rar-plugin
          2.2
        
        
          maven-release-plugin
          2.0-beta-8
        
        
          maven-resources-plugin
          2.3
        
        
          maven-site-plugin
          2.0-beta-7
        
        
          maven-source-plugin
          2.0.4
        
        
          maven-surefire-plugin
          2.4.3
        
        
          maven-war-plugin
          2.1-alpha-2
        
      
    
    
      
        maven-help-plugin
        2.1.1
      
    
  
  
    
      
        false
      
      central
      Maven Repository Switchboard
      http://repo1.maven.org/maven2
    
  
  
    
      
        never
      
      
        false
      
      central
      Maven Plugin Repository
      http://repo1.maven.org/maven2
    
  
  
    C:\MVN\project\target/site
  

在上面的 pom.xml 中,你可以看到 Maven 在执行目标时需要用到的默认工程源码目录结构、输出目录、需要的插件、仓库和报表目录。

Maven 的 pom.xml 文件也不需要手工编写。

Maven 提供了大量的原型插件来创建工程,包括工程结构和 pom.xml。

POM 标签大全详解


    
    
        
        
        
        
        
        
        
        
    
    
    4.0.0
    
    asia.banseon
    
    banseon-maven2
    
    jar
    
    1.0-SNAPSHOT
    
    banseon-maven
    
    http://www.baidu.com/banseon
    
    A maven project to study maven.
    
    
        
        
    
    
    
        
        jira
        
        http://jira.baidu.com/banseon
    
    
    
        
        
        
        
        
        
            
            
                
                
                
                
                
                
                
                
                
                
                
                
Demo [email protected] [email protected] [email protected] http:/hi.baidu.com/banseon/demo/dev/ HELLO WORLD banseon [email protected] Project Manager Architect demo http://hi.baidu.com/banseon No -5 Apache 2 http://www.baidu.com/banseon/LICENSE-2.0.txt repo A business-friendly OSS license scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk http://svn.baidu.com/banseon demo http://www.baidu.com/banseon ...... ...... Windows XP Windows x86 5.1.2600 mavenVersion 2.0.3 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ ...... ...... ...... ...... ...... ...... banseon-repository-proxy banseon-repository-proxy http://192.168.1.169:9999/repository/ default ...... org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true ...... banseon-maven2 banseon maven2 file://${basedir}/target/deploy banseon-maven2 Banseon-maven2 Snapshot Repository scp://svn.baidu.com/banseon:/usr/local/maven-snapshot banseon-site business api website scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web

你可能感兴趣的:(maven,maven,java)