承接前文Maven安装Maven settings.xml解读

pom文件解析

笔者此处只对一些重要的配置作下讲解,更多的配置详情参考官网Maven-POM Reference


先附上简单的POM配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jing</groupId>
<artifactId>testMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>testMaven</name>
<description>This is a test war maven</description> <dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
<build>
<finalName>testMaven</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
</project>

parent

父POM依赖配置

  <parent>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<relativePath>../my-parent</relativePath>
</parent>

注意点:

  1. 子项目可继承父项目,有个前提是父项目的打包类型packing必须为pom,且单个子项目只可继承一个父项目

  2. relativePath表示寻找父项目pom文件的相对路径,默认值为../pom.xml。查找规则为:maven首先从当前构建项目开始查找父项目的pom文件,然后从本地仓库,最后从远程仓库。

  3. 子项目继承父项目(包含祖先项目)的属性主要有dependenciespluginsproperties等等;

    modules是不继承的;

    如果子项目不指明version则默认使用父项目对应的version值,上例中便是2.0

packing

工程项目的打包类型。默认为jar类

  • jar 打包后会生成.jar格式的依赖包
  • war 打包后会生成.war格式的web包
  • pom 表明只是一个模板类型,多用于父项目

properties

全局属性,只对当前工程有效,不对父/子工程生效

  <properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

其中的属性可通过${${key}}引用,上例中便可通过${maven.compiler.source}得到1.7

dependencyManagement

依赖配置管理

<dependencyManagement>
<dependencies>
<dependency>...</dependency>
</dependencies>
</dependencyManagement>

注意点:

  1. 代表不应用parent参数中的version属性,即采用自定义的version属性。
  2. 需要注意的是它并不添加项目的依赖,只是对项目的依赖进行管理,只有POM中定义了指定的dependency属性才会被添加到项目中

dependency

笔者此处对denpendcy参数作下详细的描述

classifier

classifier主要是在version的基础上再添加指定相应的类型,比如betarealease

举个例子:

<!--加载的依赖名为json-20140107-beta.jar-->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
<classifier>beta</classifier>
</dependency>

scope

依赖作用范围,默认为compile。具体参数配置如下

  • compile 适用于所有阶段,包括发布
  • provided 作用在编译和测试阶段,并不具有传递性,针对Servlet api等使用,同时可用来剔除jar包
  • runtime 只作用于运行、测试阶段,比如JDBC驱动
  • test 只作用于测试阶段,且不会随发布包发布
  • system 以外部包形式加载第三方依赖包,与systemPath属性搭配使用
  • import 作用于<dependencyManagement>节点下,表示引入相应POM中的<dependencyManagement>预定义依赖,解决单继承而无法分类管理依赖库的问题
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<!--版本号保持一致-->
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

optional

设置依赖是否可选,默认为false,表示该项目如果被继承,此依赖会随着被传递;若配置为true,则和dependencyManagement功能一致,只有子项目显式指定才会被加载

exclusions

剔除相应的依赖,避免jar包冲突,即不要在一个项目引入多种同类型但不同版本的jar包

modules

为当前项目添加子项目,而相应的子项目,其pom文件必须有相应的parent参数指向当前项目

小结

POM文件也可配置repositorydistributeManagement参数用于下载构建和上传构建,具体可见前文分析。

Maven pom.xml简单归结的更多相关文章

  1. Maven pom.xml文件详解

    Maven pom.xml文件详解 一.简介 POM全称是Project Object Model,即项目对象模型. pom.xml是maven的项目描述文件,它类似与antx的project.xml ...

  2. 史上最全的maven pom.xml文件教程详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  3. myeclipse maven pom.xml 配置错误

    http://www.oschina.net/question/2265006_219341#tags_nav maven pom.xml 配置文件错误       腾讯云消息队列CMQ架构解析> ...

  4. 在maven pom.xml中加载不同的properties ,如localhost 和 dev master等jdbc.properties 中的链接不一样

    [参考]:maven pom.xml加载不同properties配置[转] 首先 看看效果: 点开我们项目中的Maven projects 后,会发现右侧 我们profile有个可勾选选项.默认勾选l ...

  5. (转)Maven pom.xml 配置详解

    背景:maven一直感觉既熟悉又陌生,归根结底还是自己不太熟. 1 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者 ...

  6. maven pom文件简单模板和配置详解

    https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解

  7. Maven(四-2) Maven pom.xml 配置详解

    转载于:http://niuzhenxin.iteye.com/blog/2042102 什么是pom?    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述 ...

  8. Maven pom.xml 全配置(二)不常用配置

    Maven pom.xml 全配置(二)不常用配置 这里贴出Maven pom.xml文件中使用率较少的配置参数,如果此篇文档中没有找到你想要的参数,移步Maven pom.xml 全配置(一)常用配 ...

  9. Maven pom.xml 全配置(一)常用配置

    Maven pom.xml 全配置(一)常用配置 这里贴出一个Maven中出现频率较高的配置参数注释,方便理解项目中Maven的配置具体的作用.如果在此博文中没有找到你想看到的参数,可以移步Maven ...

随机推荐

  1. BZOJ2300: [HAOI2011]防线修建

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2300 (我只是在发以前写过的题.. 因为题目没说强制在线,所以离线乱搞就可以了.先把点删掉然后 ...

  2. android银行卡匹配、详情展开动画、仿爱奇艺视频拖拽、扫码识别手机号等源码

    Android精选源码 android实现银行卡匹配信息源码 android实现可以展开查看详情的卡片 下拉刷新,上拉加载,侧滑显示菜单等效果RefreshSwipeRecyclerview andr ...

  3. zlib1.2.11静态编译

    1.进入官网http://zlib.net/,下载且解压zlib1211.zip: 2. 打开已解压的zlib-1.2.11目录,找到win32文件夹 3.将Makefile.msc复制到上一层,也就 ...

  4. Spring框架学习笔记(4)——配置bean more

    1.配置List属性 <!-- 配置List属性 --> <bean id="person4" class="com.broadtext.beans.c ...

  5. AMD规范学习笔记

    背景 NodeJS的一套比较简洁 Moudles 规范, 使得在服务器端的模块化变得更加简单.很长一段时间,很多公司或者项目都有自己的一套模块化机制, 却未能形成一套统一的标准, NodeJS的Mou ...

  6. 《并行程序设计导论》——MPI(Microsoft MPI)(1):Hello

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  7. 【编程技巧】Ext.MessageBox 大集合 不同的dialog图解加写法

    1.alert对话框 效果图: function a1(){ Ext.MessageBox.alert('title','text');  } 2.confirm案例,确定不确定2个按钮对话框 效果图 ...

  8. c# winform 类似android toast消息功能

    先看下效果: 支持动画,支持声音,支持定时自动关闭 使用方法: var notifycation = new Notification("My Notification", &qu ...

  9. 底部粘连(stiky footer)布局

    前面的话 在网页设计中,Sticky footers设计是最古老和最常见的效果之一,大多数人都曾经经历过.它可以概括如下:如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内 ...

  10. python_斐波那契数列

    什么是斐波那契数列? -- 一组第从第三个值开始,每个值都等于前两个值之和的一种有意思的数列 如[1, 1, 2, 3, 5, 8, 13, 21, 34, 55] 如何用程序进行实现? -- 逻辑整 ...