【Maven】pom.xml教程

在上篇文章中我们了解了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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值