Maven中pom.xml各标签及解析

概括

首先,简单介绍一下maven,maven是用来管理项目的一个工具。如当前有个需求,我需要引入mybatis的包,对于以前的话,就是创建lib文件夹,然后网上下载jar包,放入到文件夹中,然后导入到项目中。而使用maven的话,只需要在maven的pom.xml文件中,将jar包的坐标写入,此时maven就会自动下载jar包到本地文件夹中,自动导入到项目中,十分方便。
首先我们先看一下maven构建项目的基本结构

├── pom.xml (主要文件,相当于maven项目的配置文件)
├── src
│   ├── main
│   │   ├── java (存放java代码的目录)
│   │   └── resources (存放源文件的目录如properties\xml)
│   └── test (测试目录,maven打包的时候如果存在测试目录,会先调用测试类进行断言测试,非必要)
│       ├── java (测试目录的java代码,非必要)
│       └── resources (测试目录的源文件目录,非必要)
└── target

对于maven的生命周期的话,简单来说其实是这样
compile -> test-compile -> test -> package -> install
编译源码 -> 编译测试目录的代码 -> 执行测试目录代码 -> 打包 -> 下载成jar/war/rar等包
然而对于执行上述的操作的话,最主要是看 pom.xml这个配置文件,在调用 mvn install xxx命令的时候,其实就是根据pom.xml对项目进行编译打包等操作。
由于pom.xml是最重要的文件,那我我们这篇文章就看一下pom.xml里面有那些属性。

基本上我们使用到的标签如下

<project>
  <!-- 打包信息 --> 
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <!-- 属性标签 -->
  <properties>...</properties>
  <!-- 项目依赖 -->
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
 
  <!-- 插件信息 -->
  <plugins>...<plugin>
</project>

打包信息

在这里插入图片描述

<!-- xml文件的头,用来定义当前xml使用的编码格式而已 -->
<?xml version="1.0" encoding="UTF-8"?>

<!-- maven pom.xml的头定义,其实可以不用管,创建maven文件的时候自动就创建出来了 -->
<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:用来表示此项目的唯一Id,可以多个模块同一个groupId
artifactId:当前项目的名称
version:项目版本号,通常 SNAPSHOT为开发版本,RELEASE为正式发布的版本
packaging:当前项目的打包方式,通常为jar/war/rar等,基本上java项目打包为jar,javeweb项目打包为war

属性标签

<!-- 用来自定义属性值的标签,使用方法如下 -->
<properties>
	<!-- 首先定义一个自定义的属性值,通常命名为这样  “技术名称.版本号”,
		如定义spring的版本号 -->
	<spring.version>5.3.13</spring.version>
	<!-- 此时就可以在pom.xml中,直接调用此属性值了,使用 ${spring.version} 就会自定义的将设置的值赋值上去 -->
</properties>

项目依赖

dependencies:用于管理当前项目依赖的项目

<dependencies>
	<!-- 如要引入spring项目,则按照以下步骤导入即可
		1、创建 <dependency>标签
		2、dependency标签下创建 <groupId>、<artifactId>、<version>标签
		3、填上相对应的项目名称及id即可 
		4、当然,下面还有更多的标签,如 <scope> <optional> <type>等,这些就不一一说了
	-->
	<dependency>
		<!-- spring项目的唯一id -->
		<groupId>org.springframework</groupId>
		<!-- 导入spring项目的哪个模块 -->
		<artifactId>spring-web</artifactId>
		<!-- 版本号,当然也可以直接写版本,只是我这里为了演示上面的属性标签而已 -->
		<version>${spring.version}</version>
	</dependency>
</dependencies>

这三个标签只是最基本的标签而已,就连version都可以省略的,其实还有其他挺多标签的,如 optional,就可以设置父类看不到当前依赖的包,也可以设置 exclusion,引入依赖的时候排除某个项目,所以其实具体也有很多其他标签的,这些都可以上官网上看到

parent:父类的项目,如创建了两个模块,模块B在pom.xml中配置parent为模块A,则此时,模块A默认能引用模块B的依赖(排除的除外)
dependencyManagement:效果和 "dependency"一致,但是这个是在父模块中使用,是用来同意管理子模块的依赖的,比如在最高级的父模块中使用此标签的话,子模块中可以不用写version,统一使用父模块的版本
modules:也是父模块使用的,主要是用来设置一批量的子模块

<!-- 如有A,B两个子模块 -->
<modules>
	<module> A </module>
	<module> B </module>
</modules>

插件信息

如要编译当前maven,或者要install当前Maven项目的话,我们可以不需要去cmd中使用命令行编译,而是可以直接导入插件然后执行插件的去帮我们做事情。或者一个web的maven项目,需要启动tomcat的话,也可以使用tomcat的maven插件去做事情,如以下例子:

<plugin> 
	<!-- 
	groupid\artifactid\version:这些就不解释了
	extensions:true or false, 决定是否要加载这个插件的extensions,默认为true。
	inherited:是否让子模块继承当前这个插件
	configuration:配置属性
	dependencies:与基础的dependencies的结构和功能都相同
-->
    <groupId></groupId> 
    <artifactId></artifactId> 
    <version></version> 
    <extensions></extensions> 
    <inherited></inherited> 
    <configuration> 
      <classifier></classifier> 
    </configuration> 
    <dependencies>...</dependencies> 
</plugin>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值