【Maven】pom.xml教程
在上篇文章中我们了解了Maven:https://blog.hackyle.net/index.php/tools/maven-basic/,接下来我们将深入了解Maven的核心:pom.xml
什么是pom.xml
POM(Project Object Model):项目对象模型。
- Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,pom.xml是Maven的灵魂。相当于JavaWeb工程的web.xml。
- 所以,maven环境搭建好之后,所有的学习和操作都是关于pom.xml的。
- modelVersion:Maven模型的版本,对于 Maven2和 Maven3来说,它只能是4.0.0
坐标
什么是坐标:
- 在互联网中唯一标识一个项目
- 由groupId、artifactId、version共同标识一个坐标
- groupId:组织ID,一般是公司域名的倒写。例如,百度可以指定groupId为:com.baidu
- artifactId:项目名称(模块名称),对应groupId中项目中的子项目。也要保持唯一。例如,百度地图可以指定为:baiduMap
- version:项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带”-SNAPSHOT”。version使用三位数字标识,例如1.1.2
从中央仓库获取Jar:
- 进入https://mvnrepository.com/
- 输入关键字进行搜索(例如我搜索:mysql),点击想要的版本:
打包
packaging
- 打包后压缩文件的拓展名,默认是jar,web应用是war
- 也可以不写,默认就是jar
依赖
什么是依赖:
- dependencies 和dependency,相当于是 java代码中import
- 因为Maven的一个重要作用就是管理jar包,这个标签就是指定项目中使用的第三方包的位置
scope
什么是scope标签
- 作用:指定依赖(也就是Jar包)在哪个阶段使用。阶段有编译,测试,打包,安装,部署。
- scope的值有:
- compile:编译时候才用。默认是compile
- test:测试的时候才用
- provided:表明该Jar包(依赖)不参与打包、安装、部署阶段。
依赖的传递:
好处:不用再每个模块工程中都重复声明。
注意:非compile范围的依赖不能传递。
依赖的排除:
依赖排除实例
配置属性properties
什么是配置属性properties
- 是用来设置一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码。
- 定义全局变量,通过“${属性名}”引用变量的值。
properties标签实例
<?xml version="1.0" encoding="UTF-8"?><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>其他标签<!--设置Maven的属性--><properties><!--设置编码--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--编译Java代码的JDK版本--><maven.compiler.source>1.7</maven.compiler.source><!--代码运行的JDK版本,与上一个标签中的版本保持一致--><maven.compiler.target>1.7</maven.compiler.target></properties>其他标签</project>
统一版本号
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.hackyle</groupId><artifactId>MavenJavaWeb</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><spring-version>5.2.6.RELEASE</spring-version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring-version}</version></dependency></dependencies></project>
构建build
构建build:
- build表示与构建相关的配置,例如设置编译插件的jdk版本
- 同时也控制Maven自身的配置参数
继承
什么是继承parent:
- 如果多个模块都需要声明相同的配置,例如:有相同的依赖、或者相同的组件配置等。那我们就把这些相同的部分抽取出来放在一个“父工程”中。
- 这样也方便修改和统一管理。
例子:
- Aaa模块中依赖的Junit为4.0,Bbb模块中依赖的Junit为4.9,Ccc模块中依赖的Junit为4.1。在同一个项目的各个模块的版本都不一致,容易出问题。
- 所以我们需要统一管理各个模块工程中对Junit依赖的版本。
- 解决思路:将Junit依赖统一提取到“父”工程中,在子工程中声明Junit依赖是不指定版本,以父工程中统一设定的为准。
如何实现一个父工程:
1) 创建一个Maven工程作为父工程。打包方式为pom。
2) 在子工程中声明对父工程的引用
3) 将子工程的坐标中与父工程坐标中重复的内容删除
4) 注意:配置继承后,执行安装命令时先安装父工程。
聚合
什么是聚合modules
- 对于使用了继承方式的项目(即有父工程)
- 以往在安装的时候需要先安装父工程,这样还不够自动化。所以引入聚合,一键安装各个模块工程。
具体操作步骤:
- 在父工程中配置各个参与聚合的模块
- 在父工程上执行Run As-Maven Install
【Maven】pom.xml教程相关推荐
- Maven pom.xml 全配置(二)不常用配置
Maven pom.xml 全配置(二)不常用配置 这里贴出Maven pom.xml文件中使用率较少的配置参数,如果此篇文档中没有找到你想要的参数,移步Maven pom.xml 全配置(一)常用配 ...
- Maven pom.xml 全配置(一)常用配置
Maven pom.xml 全配置(一)常用配置 这里贴出一个Maven中出现频率较高的配置参数注释,方便理解项目中Maven的配置具体的作用.如果在此博文中没有找到你想看到的参数,可以移步Maven ...
- java配置pom安装依赖包,Maven pom.xml 添加本地jar包依赖以及打包方法
Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法: 1. 安装到本地仓库 第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候.只需 ...
- 你真的了解Maven pom.xml 的配置吗?【详解maven pom】
Maven POM POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖 ...
- 在maven pom.xml中加载不同的properties ,如localhost 和 dev master等jdbc.properties 中的链接不一样...
[参考]:maven pom.xml加载不同properties配置[转] 首先 看看效果: 点开我们项目中的Maven projects 后,会发现右侧 我们profile有个可勾选选项.默认勾选l ...
- 史上最全的maven pom.xml文件教程详解
<project xmlns=http://maven.apache.org/POM/4.0.0 xmlns:xsi=http://www.w3.org/2001/XMLSchema-insta ...
- maven POM.xml 标签详解
pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...
- maven pom.xml 报错
eclipse maven项目错误:Failure to transfer org.codehaus.plexus:plexus-interpolation:jar:1.15 from http:// ...
- 学习笔记——Maven pom.xml配置详解
POM的全称是"ProjectObjectModel(项目对象模型)". pom.xml详解 声明规范 <projectxmlns="http://maven.ap ...
最新文章
- Java常见的面试算法题:实现两个线程交替打印1到100的数
- 九、distinct
- Vaadin提示:以声明方式构建UI
- kali linux 开启配置ssh服务
- *【牛客 1 - A】矩阵(字符串hash)
- Linux系统的启动过程(转)
- HBase之MVCC
- Springpath专注于思科OEM开发工作
- 适用于stuido one的虚拟贝斯手插件:UJAM Virtual Bassist ROYAL for Mac
- 信息与通信工程学科面试准备——信号与系统
- 机器学习、深度学习、计算机视觉、自然语言处理及应用案例
- 手机忘记开机密码怎么办?我来教你
- eclipse-mars-2-win32.zip 下载
- 技术人员成长路线感悟
- SDN入门第五篇——交换机与控制器之间的交互流程
- Android逆向-APP破解练习(一)
- spring jsm(一)
- python在多继承中子类调用某个父类的同名方法之 super讲解(mro机制)***
- C语言:输出1~1000 之间所有的完全平方数
- 九宫山自驾露营二日游
热门文章
- new delete 详解
- repmat命令的使用方法
- (附源码)spring boot养老服务系统 毕业设计 163115
- python自定义函数求面积_Python函数之计算规则图形的面积
- libmawt.so: ld.so.1: java: fatal: libXm.so.4: open failed: No such file or directory
- 保护用户通话记录隐私,各地移动纷纷采用随机短信密码
- 这个点子绝了, 母婴店靠“废品回收”,一个月赚了70万?
- 基于轻量级卷积网络的小目标检测--轻量级骨干网络部分
- 6.8亿!拼多多活跃买家数直逼阿里,购买力成短板
- fsk调制解调matlab,FSK调制解调MATLAB源代码.docx