Maven之pom配置文件详解

Maven之pom.xml配置文件详解

一、什么是pom?

POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。

二、概览

下面是一个POM项目中的pom.xml文件中包含的元素。注意,其中的modelVersion是4.0.0,这是当前仅有的可以被Maven2&3同时支持的POM版本,它是必须的。


    4.0.0
    
    
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    
    
    ...
    ...
    
    
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    
    
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...
    ...

三、maven POM.xml详解

1、基本配置

----------------------------------------------------------------------------------------------------------------------------------------------
modelVersion	Maven模块版本,目前我们一般都取值4.0.0
----------------------------------------------------------------------------------------------------------------------------------------------
groupId	        整个系统的名称。
----------------------------------------------------------------------------------------------------------------------------------------------
artifactId	子模块名称。
----------------------------------------------------------------------------------------------------------------------------------------------
packaging	打包类型,可取值:jar,war等等,这个配置用于package的phase,具体可以参见package运行的时候启动的plugin,后面有机会我们会讲述如何配置打包的插件。
----------------------------------------------------------------------------------------------------------------------------------------------

2、dependencies

依赖关系。实际上pom之间存在好三种关系:继承、依赖、聚合。我们先讲依赖,这也是最重要的关系。
---------------------------------------------------------------------------------------------
groupId            依赖项的groupId                                                          
---------------------------------------------------------------------------------------------  
artifactId         依赖项的artifactId
---------------------------------------------------------------------------------------------
version            依赖项的版本
---------------------------------------------------------------------------------------------
                   依赖项的适用范围:
                   compile,缺省值,适用于所有阶段,会随着项目一起发布。
                   provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
scope              runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
                   test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
                   system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
                   之前例子里的junit就只用在了test中。
---------------------------------------------------------------------------------------------
exclusions         排除项目中的依赖冲突时使用。
---------------------------------------------------------------------------------------------
2.1、我们可能经常会遇到这样一个问题:我们的项目有两个依赖项:A & B,而且A和B同时依赖了C,但不是同一个版本。那么我们怎么办呢?
2.1.1、添加检查插件
        
                
                    
                        org.apache.maven.plugins
                        maven-project-info-reports-plugin
                    
                
            
        然后运行:mvn project-info-reports:dependencies,来查看依赖项报告。
2.1.2、去除依赖项
    如果我们需要在某个dependency中去除某个依赖项,直接这样即可:
    
    
            
                org.apache.struts
                struts2-core
                ${struts.version}
                
                    
                        org.freemarker
                        freemarker
                    
                
            

3、继承

我的repository下面有个例子就直接拿来用了:

4.0.0
  
    com.thoughtworks.xstream
    xstream-parent
    1.4.3
  
  xstream
  jar
  XStream Core
其中的parent表示父pom是com.thoughtworks.xstream的xstream-parent的1.4.3版本。继承关系比较简单,这里不做过多介绍。

4、聚合

我们可以通过一个大的项目来整合各个小的模块:


    my-app

5、属性

属性表述类似于EL表达式,ANT中也同样有,所以我们的properties字段可以这样使用:



    mysql
    mysql-connector-java
    ${mysql.version}

6、构建

6.1 plugin
Plugin的配置如下:


    
        
            org.apache.tomcat.maven
            tomcat7-maven-plugin
            2.1
            
            http://localhost:8080/manager/html
            tomcat_localtest
            
        
    

我们可以看到同样要哟偶groupId、artifactId、version还有一些配置参数。
6.2 resource
指定你在Build时需要的资源文件:


    
        WEB-INF/resource
        
        false
        ${basedir}/src/test/resources
            
                include.xml
            
            
                exclude.xml
            
    

宝宝们有啥问题可以联系我呦!!!

QQ邮箱:[email protected]

你可能感兴趣的:(配置文件,配置文件)