【Maven】Maven 中 pom.xml 文件

文章目录

前言

Maven 是一个项目管理工具,可以对 Java 项目进行构建和管理依赖。

本文,我们认识下 pom.xml 文件。POM(Project Object Model, 项目对象模型) 是 Maven 工程的基本工作单位,也是 Maven 的核心。其包含项目的基本信息,用于描述项目如何构建、声明项目依赖等。

什么是 pom?

POM 是 Project Object Model 的缩写,即项目对象模型。

pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。

pom配置一览

xml 复制代码
<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>

  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>

  <!-- Build Settings -->
  <build>...</build>
  <reporting>...</reporting>

  <!-- More Project Information -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>

  <!-- Environment Settings -->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

1. dependencies

在该元素下添加依赖,可以包含多个 依赖:

xml 复制代码
<dependencies>
    <dependency></dependency>
    <dependency></dependency>
</dependencies>

之间有三个标识:

  • groupId: 定义隶属的实际项目
  • artifactId: 定义项目中的一个模块
  • version: 依赖或者项目的版本
xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-start-web</artifactId>
</dependency>

2.scope

如果在编译的时候需要而在发布的时候不需要的 JAR 包,则可以使用 scope 标签标记该包,并将值设置为 provided。

xml 复制代码
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
</dependency>
  • compile:scope 的默认值,表示该依赖项目需要参与当前项目的编译、测试、运行阶段,是比较强的依赖。打包时也要包含进去。
  • provided:上面提到👆
  • runtime:会作用在运行和测试阶段。
  • system:和 provided 相似,但是在系统中要以外部 JAR 包的形式提供,Maven 不会在 repository 中查找它。
  • test:会作用在测试阶段。

3.properties

<properties></properties> 中自定义变量,方便在依赖配置时引用变量,可达到统一版本号的目的。比如:

xml 复制代码
<properties>
    <java.version>1.8.0</java.version>
    <solr.version>8.0.0</solr.version>
</properties>

通过 ${变量名} 来调用:

xml 复制代码
<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>${solr.version}</version>
</dependency>

4.plugin

在创建 Spring Boot 项目的时,默认提供了 spring-boot-maven-plugin 插件。它提供打包时需要的信息,将 Spring Boot 应用打包为可执行的 JAR 或者 WAR 文件。

xml 复制代码
pom.xml 类比 package.json

参考

  • Maven POM
  • 《Spring Boot 实战派》
相关推荐
直视太阳1 小时前
springboot+easyexcel实现下载excels模板下拉选择
java·spring boot·后端
Code成立1 小时前
《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第2章 Java内存区域与内存溢出异常
java·jvm·jvm内存模型·jvm内存区域
一 乐1 小时前
实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·毕业设计·论文·实验室预约小程序
程序媛学姐1 小时前
SpringRabbitMQ消息模型:交换机类型与绑定关系
java·开发语言·spring
努力努力再努力wz2 小时前
【c++深入系列】:类与对象详解(中)
java·c语言·开发语言·c++·redis
兰亭序咖啡2 小时前
学透Spring Boot — 009. Spring Boot的四种 Http 客户端
java·spring boot·后端
独行soc2 小时前
2025年渗透测试面试题总结- 某四字大厂面试复盘扩展 一面(题目+回答)
java·数据库·python·安全·面试·职场和发展·汽车
早上好啊! 树哥2 小时前
常见的文件加密方式之【异或加密】,代入原理看例子,帮助更好的理解。
android·java·junit
兰亭序咖啡2 小时前
学透Spring Boot — 018. 优雅支持多种响应格式
java·spring boot·后端
小雨凉如水2 小时前
docker 常用命令
java·docker·eureka