在上篇文章中我们了解了Maven:https://blog.hackyle.net/index.php/tools/maven-basic/,接下来我们将深入了解Maven的核心:pom.xml

什么是pom.xml

POM(Project Object Model):项目对象模型。

  1. Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,pom.xml是Maven的灵魂。相当于JavaWeb工程的web.xml。
  2. 所以,maven环境搭建好之后,所有的学习和操作都是关于pom.xml的。

  1. modelVersion:Maven模型的版本,对于 Maven2和 Maven3来说,它只能是4.0.0

坐标

什么是坐标:

  1. 在互联网中唯一标识一个项目
  2. 由groupId、artifactId、version共同标识一个坐标
  1. groupId:组织ID,一般是公司域名的倒写。例如,百度可以指定groupId为:com.baidu
  2. artifactId:项目名称(模块名称),对应groupId中项目中的子项目。也要保持唯一。例如,百度地图可以指定为:baiduMap
  3. version:项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带”-SNAPSHOT”。version使用三位数字标识,例如1.1.2

从中央仓库获取Jar:

  1. 进入https://mvnrepository.com/
  2. 输入关键字进行搜索(例如我搜索:mysql),点击想要的版本:

打包

packaging

  1. 打包后压缩文件的拓展名,默认是jar,web应用是war
  2. 也可以不写,默认就是jar

依赖

什么是依赖:

  1. dependencies 和dependency,相当于是 java代码中import
  2. 因为Maven的一个重要作用就是管理jar包,这个标签就是指定项目中使用的第三方包的位置

scope

什么是scope标签

  1. 作用:指定依赖(也就是Jar包)在哪个阶段使用。阶段有编译,测试,打包,安装,部署。
  2. scope的值有:
    1. compile:编译时候才用。默认是compile
    2. test:测试的时候才用
    3. provided:表明该Jar包(依赖)不参与打包、安装、部署阶段。

依赖的传递:

好处:不用再每个模块工程中都重复声明。

注意:非compile范围的依赖不能传递。

依赖的排除:

依赖排除实例

配置属性properties

什么是配置属性properties

  1. 是用来设置一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码。
  2. 定义全局变量,通过“${属性名}”引用变量的值。

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:

  1. 如果多个模块都需要声明相同的配置,例如:有相同的依赖、或者相同的组件配置等。那我们就把这些相同的部分抽取出来放在一个“父工程”中。
  2. 这样也方便修改和统一管理。

例子:

  1. Aaa模块中依赖的Junit为4.0,Bbb模块中依赖的Junit为4.9,Ccc模块中依赖的Junit为4.1。在同一个项目的各个模块的版本都不一致,容易出问题。
  2. 所以我们需要统一管理各个模块工程中对Junit依赖的版本。
  3. 解决思路:将Junit依赖统一提取到“父”工程中,在子工程中声明Junit依赖是不指定版本,以父工程中统一设定的为准。

如何实现一个父工程:

1)    创建一个Maven工程作为父工程。打包方式为pom。

2)    在子工程中声明对父工程的引用

3)    将子工程的坐标中与父工程坐标中重复的内容删除
4)    注意:配置继承后,执行安装命令时先安装父工程。

聚合

什么是聚合modules

  1. 对于使用了继承方式的项目(即有父工程)
  2. 以往在安装的时候需要先安装父工程,这样还不够自动化。所以引入聚合,一键安装各个模块工程。

具体操作步骤:

  • 在父工程中配置各个参与聚合的模块

  • 在父工程上执行Run As-Maven Install

【Maven】pom.xml教程相关推荐

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

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

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

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

  3. java配置pom安装依赖包,Maven pom.xml 添加本地jar包依赖以及打包方法

    Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法: 1. 安装到本地仓库 第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候.只需 ...

  4. 你真的了解Maven pom.xml 的配置吗?【详解maven pom】

    Maven POM POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖 ...

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

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

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

    <project xmlns=http://maven.apache.org/POM/4.0.0 xmlns:xsi=http://www.w3.org/2001/XMLSchema-insta ...

  7. maven POM.xml 标签详解

    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...

  8. maven pom.xml 报错

    eclipse maven项目错误:Failure to transfer org.codehaus.plexus:plexus-interpolation:jar:1.15 from http:// ...

  9. 学习笔记——Maven pom.xml配置详解

    POM的全称是"ProjectObjectModel(项目对象模型)". pom.xml详解 声明规范 <projectxmlns="http://maven.ap ...

最新文章

  1. Java常见的面试算法题:实现两个线程交替打印1到100的数
  2. 九、distinct
  3. Vaadin提示:以声明方式构建UI
  4. kali linux 开启配置ssh服务
  5. *【牛客 1 - A】矩阵(字符串hash)
  6. Linux系统的启动过程(转)
  7. HBase之MVCC
  8. Springpath专注于思科OEM开发工作
  9. 适用于stuido one的虚拟贝斯手插件:UJAM Virtual Bassist ROYAL for Mac
  10. 信息与通信工程学科面试准备——信号与系统
  11. 机器学习、深度学习、计算机视觉、自然语言处理及应用案例
  12. 手机忘记开机密码怎么办?我来教你
  13. eclipse-mars-2-win32.zip 下载
  14. 技术人员成长路线感悟
  15. SDN入门第五篇——交换机与控制器之间的交互流程
  16. Android逆向-APP破解练习(一)
  17. spring jsm(一)
  18. python在多继承中子类调用某个父类的同名方法之 super讲解(mro机制)***
  19. C语言:输出1~1000 之间所有的完全平方数
  20. 九宫山自驾露营二日游

热门文章

  1. new delete 详解
  2. repmat命令的使用方法
  3. (附源码)spring boot养老服务系统 毕业设计 163115
  4. python自定义函数求面积_Python函数之计算规则图形的面积
  5. libmawt.so: ld.so.1: java: fatal: libXm.so.4: open failed: No such file or directory
  6. 保护用户通话记录隐私,各地移动纷纷采用随机短信密码
  7. 这个点子绝了, 母婴店靠“废品回收”,一个月赚了70万?
  8. 基于轻量级卷积网络的小目标检测--轻量级骨干网络部分
  9. 6.8亿!拼多多活跃买家数直逼阿里,购买力成短板
  10. fsk调制解调matlab,FSK调制解调MATLAB源代码.docx