技术博客 技术博客
  • JAVA
  • 仓颉
  • 设计模式
  • 人工智能
  • Spring
  • Mybatis
  • Maven
  • Git
  • Kafka
  • RabbitMQ
  • RocketMQ
  • Redis
  • Zookeeper
  • Nginx
  • 数据库套件
  • MySQL
  • Elasticsearch
  • MongoDB
  • Hadoop
  • ClickHouse
  • Hbase
  • Hive
  • Flink
  • Flume
  • SQLite
  • linux
  • Docker
  • Jenkins
  • Kubernetes
  • 工具
  • 前端
  • AI
GitHub (opens new window)
  • JAVA
  • 仓颉
  • 设计模式
  • 人工智能
  • Spring
  • Mybatis
  • Maven
  • Git
  • Kafka
  • RabbitMQ
  • RocketMQ
  • Redis
  • Zookeeper
  • Nginx
  • 数据库套件
  • MySQL
  • Elasticsearch
  • MongoDB
  • Hadoop
  • ClickHouse
  • Hbase
  • Hive
  • Flink
  • Flume
  • SQLite
  • linux
  • Docker
  • Jenkins
  • Kubernetes
  • 工具
  • 前端
  • AI
GitHub (opens new window)
  • Spring

    • spring

      • 核心内容拆解 IOC
      • 核心内容拆解 AOP
      • 核心内容拆解 事件通知
      • 核心内容拆解 三级缓存
      • 核心内容拆解 FactoryBean
      • 注解替代Spring生命周期实现类
    • spring mv

      • Spring MVC 之基本工作原理
    • spring boot

      • SpringBoot 之 Filter、Interceptor、Aspect
      • SpringBoot 之 Starter
      • SpringBoot 之 Stomp 使用和 vue 相配置
      • SpringBoot MyBatisPlus 实现多数据源
      • SpringBoot MyBatis 动态建表
      • Spring Boot 集成 Jasypt 3.0.3 配置文件加密
      • Spring Boot 集成 FastDFS
      • Spring Boot VUE前后端加解密
      • Spring Boot logback.xml 配置
      • Spring Boot MinIO
      • Spring Boot kafka
      • Spring Boot WebSocket
    • spring cloud

      • SpringCloud - Ribbon和Feign
      • SpringCloud alibaba - Nacos
      • SpringCloud alibaba - Sentinel哨兵
      • SpringCloud alibaba - Gateway
      • SpringCloud alibaba - 链路跟踪
      • SpringCloud - 分布式事务一(XA,2PC,3PC)
      • SpringCloud - 分布式事务二(Seata-AT,TCC,Saga)
      • SpringCloud - 分布式事务三(Seata搭建)
      • SpringCloud - 分布式事务四(多数据源事务)
      • SpringCloud - 分布式事务五(微服务间调用的事务处理)
  • Mybatis

    • 核心功能拆解 工作流程
    • 核心功能拆解 Plugin插件功能实现
    • 核心功能拆解 一二级缓存原理
    • MyBatis Plus+Spring Boot 实现一二级缓存以及自定义缓存
  • maven

    • pom 文件介绍及 parent、properties 标签详解
      • pom.xml 介绍
      • parent 标签详解
      • properties 标签详解
    • dependencies 标签详解
    • 使用 Nexus3.x 搭建私服
  • git

    • 私有 git 仓库搭建
目录

pom 文件介绍及 parent、properties 标签详解

# pom.xml 介绍

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

pom 中的描述信息都是用 xml 标签的方式,其中包含双标签和单标签,最顶部用于描述 xml 得版本和编码,其次是以 project 开头得双标签并表示为一个项目,定义了该项目可用内容及规范。

# 双标签
<project></project>

# 单标签
<project/>
1
2
3
4
5

对于 pom 可用内容较多,一级标签有如下表所示,但常用的都会有对应的描述

标签 描述
modelVersion 当前模型使用的版本
parent 继承某个 pom,部分是不可继承的
groupId 公司或组织着唯一标识,如 org.springframework.boot 第一段是域(org、com 非盈利组织、商业组织),第二段是公司名称,第三段是应用名称
artifactId 项目的唯一 ID
version 项目所属的版本号
name 项目名称
description 项目描述信息
properties 配置信息描述,更多的是描述依赖 jar 版本、项目版本等
dependencies 所要依赖的 jar 都需要在这里描述
build 构建信息,包括插件,资源文件信息等
profiles 作用于项目环境的切换(dev、test、produce)
packaging 描述项目的类型,可选 pom、jar、war
repositories 用是用来配置 maven 项目的远程仓库,可以是私服(nexus)
modules 用来配置子项目
dependencyManagement 用来提供了一种管理依赖版本号的方式。通常会在项目的最顶层的父 POM 中看到该元素。使用 pom.xml 中的 dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号
distributionManagement 用于分发构件到远程仓库;mvn install 会将项目生成的构件安装到本地 Maven 仓库,mvn deploy 用来将项目生成的构件分发到远程 Maven 仓库。本地 Maven 仓库的构件只能供当前用户使用,在分发到远程 Maven 仓库之后,所有能访问该仓库的用户都能使用你的构件。
pluginRepositories 配置 Maven 从什么地方下载插件
scm 集成了软件配置管理的,他可以支持我们常用 SVN、CVS 等
developers 配置开发者信息,例如:一个开发者可以有多个 roles,properties
issueManagement bug 跟踪管理系统,定义 defect tracking system 缺陷跟踪系统
reporting 包含 site 生成阶段的一些元素,某些 maven plugin 可以生成 reports 并且在 reporting 下配置
url 开发团队的网站,无关紧要可选
licenses 许可证信息配置
organization 配置组织信息
ciManagement ?
contributors ?
inceptionYear ?
mailingLists ?
prerequisites ?
reports ?

以一个 spring boot 常规项目做为示例:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 继承spring-boot使用他的相关依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.9</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!-- 组织,应用 -->
    <groupId>com.xxx.boot</groupId>
    <!-- 项目ID,一般都喜欢是名称 -->
    <artifactId>framework</artifactId>
    <!-- 版本 -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目名称 -->
    <name>newFramework</name>
    <description>Demo project for Spring Boot</description>
    <!-- 配置描述 -->
    <properties>
        <!-- java版本,但这个实际没什么用,单做一种描述信息看 -->
        <java.version>17</java.version>
        <!-- 实际指定编译版本可以使用如下 -->
        <maven.complier.source>17</maven.complier.source>
        <maven.complier.target>17</maven.complier.target>
    </properties>
    
    <!-- 依赖 -->
    <dependencies>
        <!-- 具体依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!-- 构建信息 -->
    <build>
        <!-- 插件 -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

# parent 标签详解

<parent></parent> 标签用于继承父项目的各类依赖及其他配置信息,如版本,构建信息,配置描述等,具体范围包括:

# 可以继承部分
groupId、version、description、url、inceptionYear、organization、licenses、developers、contributors、mailingLists、scm、issueManagement、ciManagement、properties、dependencyManagement、dependencies、repositories、pluginRepositories、build、reporting、profiles

# 不可继承部分
artifactId、name、prerequisites
1
2
3
4
5

一个 parent 里所包含全部内容有:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.9</version>
    <relativePath/>
</parent>
1
2
3
4
5
6

<relativePath/> 元素,它可以单标签也可以是双标签 <relativePath>../my-parent</relativePath> 。它不是必需的,但可以用作 Maven 的指示符,然后先搜索该项目的父级的给定路径,然后再搜索本地和远程存储库,单标签为默认从当前 pom.xml 的父级目录查找。

# properties 标签详解

<properties></properties> 没有提供什么实质性的内容供我们使用,检查下来在里面最多可以在描述一个 <project></project> 标签可用,但作用并不是不大。实际作用更多在于描述我们依赖 jar 的版本等。

<properties>
    <!-- java版本,但这个实际没什么用,单做一种描述信息看 -->
    <java.version>17</java.version>
    <!-- 实际指定编译版本可以使用如下 -->
    <maven.complier.source>17</maven.complier.source>
    <maven.complier.target>17</maven.complier.target>
    <!-- 定义lombok版本 -->
    <lombok.version>1.18.24</lombok.version>
    <project.version>0.0.1-SNAPSHOT</project.version>
</properties>
<!-- 项目版本 -->
<version>${project.version}</version>
<!-- 依赖 -->
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
    </dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
上次更新: 6/11/2025, 4:10:30 PM
MyBatis Plus+Spring Boot 实现一二级缓存以及自定义缓存
dependencies 标签详解

← MyBatis Plus+Spring Boot 实现一二级缓存以及自定义缓存 dependencies 标签详解→

Theme by Vdoing | Copyright © 2023-2025
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式