java
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
</dependency>
${servlet-api.version} 是 Maven 的属性占位符 ,表示一个可复用的版本变量。它会被你在 pom.xml 中定义的实际版本号替换。
1. 工作机制
在 pom.xml 的 <properties> 标签内,你会看到类似这样的定义:
xml
<properties>
<servlet-api.version>2.5</servlet-api.version> <!-- 实际版本号 -->
</properties>
当 Maven 构建项目时,会自动把 ${servlet-api.version} 替换为 2.5。
2. 为什么要这样写?
优点 :统一管理,一改全改
假设你项目中有多个依赖都用到了 Servlet API:
xml
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
</dependency>
<!-- 其他依赖可能也依赖 servlet 版本 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.x.x</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<!-- 这里也可以用 ${servlet-api.version} -->
</exclusion>
</exclusions>
</dependency>
</dependencies>
- 如果需要升级版本,只需改
<properties>一处,不用逐个依赖修改 - 避免多个依赖版本不一致导致的冲突
3. 如何找到实际值?
两种方法:
方法1:查看当前 pom.xml 的 <properties> 部分
bash
# 在 pom.xml 中搜索
grep -A 5 "<properties>" pom.xml
方法2:查看 Maven 有效 POM
bash
# 会显示所有变量替换后的最终 pom
mvn help:effective-pom
4. 常见变量名约定
xxx.version:用于依赖版本(如spring.version,junit.version)project.build.sourceEncoding:编码maven.compiler.source/target:Java 版本
5. 示例
xml
<project>
<properties>
<!-- 统一定义 -->
<servlet-api.version>4.0.1</servlet-api.version>
<junit.version>5.9.2</junit.version>
</properties>
<dependencies>
<!-- 引用变量 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet-api.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
</project>
总结 :${servlet-api.version} 就是 Maven 的"变量",让你在项目中集中管理版本号,提高可维护性。