文章目录
- 前言
- 什么是 pom?
- pom配置一览
- 1. dependencies
- 2.scope
- 3.properties
- 4.plugin
- 参考
前言
Maven 是一个项目管理工具,可以对 Java 项目进行构建和管理依赖。
本文,我们认识下 pom.xml 文件。POM(Project Object Model, 项目对象模型) 是 Maven 工程的基本工作单位,也是 Maven 的核心。其包含项目的基本信息,用于描述项目如何构建、声明项目依赖等。
什么是 pom?
POM 是 Project Object Model 的缩写,即项目对象模型。
pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。
pom配置一览
<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.0http://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
在该元素下添加依赖,可以包含多个 依赖:
<dependencies><dependency></dependency><dependency></dependency>
</dependencies>
之间有三个标识:
- groupId: 定义隶属的实际项目
- artifactId: 定义项目中的一个模块
- version: 依赖或者项目的版本
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-start-web</artifactId>
</dependency>
2.scope
如果在编译的时候需要而在发布的时候不需要的 JAR 包,则可以使用 scope 标签标记该包,并将值设置为 provided。
<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>
中自定义变量,方便在依赖配置时引用变量,可达到统一版本号的目的。比如:
<properties><java.version>1.8.0</java.version><solr.version>8.0.0</solr.version>
</properties>
通过 ${变量名}
来调用:
<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 文件。
pom.xml 类比 package.json
参考
- Maven POM
- 《Spring Boot 实战派》