Maven pom.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>
注意点:
子项目可继承父项目,有个前提是父项目的打包类型packing必须为pom,且单个子项目只可继承一个父项目
relativePath表示寻找父项目pom文件的相对路径,默认值为../pom.xml。查找规则为:maven首先从当前构建项目开始查找父项目的pom文件,然后从本地仓库,最后从远程仓库。
子项目继承父项目(包含祖先项目)的属性主要有dependencies、plugins、properties等等;
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>
注意点:
- 代表不应用parent参数中的version属性,即采用自定义的version属性。
- 需要注意的是它并不添加项目的依赖,只是对项目的依赖进行管理,只有POM中定义了指定的dependency属性才会被添加到项目中
dependency
笔者此处对denpendcy参数作下详细的描述
classifier
classifier主要是在version的基础上再添加指定相应的类型,比如beta、realease
举个例子:
<!--加载的依赖名为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文件也可配置repository和distributeManagement参数用于下载构建和上传构建,具体可见前文分析。
Maven pom.xml简单归结的更多相关文章
- Maven pom.xml文件详解
Maven pom.xml文件详解 一.简介 POM全称是Project Object Model,即项目对象模型. pom.xml是maven的项目描述文件,它类似与antx的project.xml ...
- 史上最全的maven pom.xml文件教程详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- myeclipse maven pom.xml 配置错误
http://www.oschina.net/question/2265006_219341#tags_nav maven pom.xml 配置文件错误 腾讯云消息队列CMQ架构解析> ...
- 在maven pom.xml中加载不同的properties ,如localhost 和 dev master等jdbc.properties 中的链接不一样
[参考]:maven pom.xml加载不同properties配置[转] 首先 看看效果: 点开我们项目中的Maven projects 后,会发现右侧 我们profile有个可勾选选项.默认勾选l ...
- (转)Maven pom.xml 配置详解
背景:maven一直感觉既熟悉又陌生,归根结底还是自己不太熟. 1 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者 ...
- maven pom文件简单模板和配置详解
https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解
- Maven(四-2) Maven pom.xml 配置详解
转载于:http://niuzhenxin.iteye.com/blog/2042102 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述 ...
- Maven pom.xml 全配置(二)不常用配置
Maven pom.xml 全配置(二)不常用配置 这里贴出Maven pom.xml文件中使用率较少的配置参数,如果此篇文档中没有找到你想要的参数,移步Maven pom.xml 全配置(一)常用配 ...
- Maven pom.xml 全配置(一)常用配置
Maven pom.xml 全配置(一)常用配置 这里贴出一个Maven中出现频率较高的配置参数注释,方便理解项目中Maven的配置具体的作用.如果在此博文中没有找到你想看到的参数,可以移步Maven ...
随机推荐
- [bzoj4592] [Shoi2015]脑洞治疗仪
题面无法直视系列. 中规中矩的线段树题. 涉及的操作有:区间赋值为0,计算区间内1的个数,区间赋值为1,求区间内最大的连续的1的个数. #include<cstdio> #include& ...
- 最长上升子序列(LIS) dp学习~3
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 Super Jumping! Jumping! Jumping! Time Limit: 200 ...
- find the nth digit(二分查找)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1597 find the nth digit Time Limit: 1000/1000 MS (Jav ...
- Lua语言的介绍和编程语言的归类
Lua 本条目介绍的是一种编程语言.关于关于Lua在维基百科中的使用,请见"维基百科:Lua".关于"Lua"一词的其他意思,请见"卢阿". ...
- [国嵌攻略][137][DM9000网卡驱动编程]
DM9000数据发送 DM9000数据发送函数是在/drivers/net/dm9000.c中的dm9000_start_xmit函数 static int dm9000_start_xmit(str ...
- Unity Object Pool完全体
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public ...
- 从零开始学习前端开发 — 14、CSS3变形基础
一.css3变形: transform:rotate(旋转)|scale(缩放)|skew(倾斜)|translate(位移); 注:当多种变形方式综合在一起时,用空格隔开 1.旋转 a) rotat ...
- php错误 分析
---------------------------------------------------------------------------------------------------- ...
- oracle查看表空间下数据文件
下面两个数据字典视图就知道了.查看有哪些表空间:select * from dba_tablespaces;查看有哪些数据文件在哪个表空间中:select * from dba_data_files; ...
- phthon网络编程
软件开发架构 既然谈起网络编程,就得说说软件开发的架构: c/s架构 C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入.输出设备,而是具有了一定的数据处理和数 ...