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 ...
随机推荐
- Vijos P1786 质因数分解【暴力】
质因数分解 背景 NOIP2012普及组第一题 描述 已知正整数n是两个不同的质数的乘积试求出较大的那个质数. 格式 输入格式 输入只有一行包含一个正整数n. 输出格式 输出只有一行包含一个正整数p, ...
- android组件化方案、二维码扫码、Kotlin新闻客户端、动画特效等源码
Android精选源码 CalendarView日历选择器 android下拉刷新动画效果代码 一个非常方便的fragment页面框架 android组件化方案源码 Zxing实现二维码条形码的扫描和 ...
- html5 文本格式化
通常标签 <strong> 替换加粗标签 <b> 来使用, <em> 替换 <i>标签使用.然而,这些标签的含义是不同的:<b> 与< ...
- [国嵌攻略][107][Linux进程管理子系统]
进程与程序 1.程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体. 2.进程:是一个执行中的程序,它是一个动态的实体. 进程四要素 1.有一段程序供其执行.这段程序不一定是某个进程所 ...
- 浅谈event.client、event.screen与event.offset
每每看到event.client.event.screen与event.offset这几个,头都大了,今天又碰到了,特来总结下. 1.event.screenX与event.screenY. 首先,e ...
- .26-浅析webpack源码之事件流make(1)
compilation事件流中,依然只是针对细节步骤做事件流注入,代码流程如图: // apply => this-compilation // apply => compilation ...
- Anndroid 使用相机或相册打开图片
安卓操作相机or相册 笔者做这方面测试的时候,没遇到什么大坑基本上,需要注意的有两点 1. 使用相册打开读取图片需要使用运行时权限,而且还是要在AndroidManifest.xml中进行权限声明 ...
- 一对多(多对一)关系中的inverse和cascade属性
转载请标明出处 http://www.cnblogs.com/haozhengfei/p/6049276.html 首先说一下inverse: "inverse" 直译过来就是&q ...
- tomcat实现热部署的配置
p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; text-align: justi ...
- 见微知著——从自定义类型的operator==说起
今天打算用C++模拟一下Java的Object对象.需求很简单,通过一个自定义用户类型包装一个内建类型,并提供equals.hashCode.=和== 4种函数. 源码如下: #pragma once ...