当前位置: 首页 > news >正文

pom.xml文件中的${}变量从哪里传值

在 Maven 的 pom.xml 文件中,${} 格式的变量(称为属性占位符)的值来源主要有以下几种途径:


1. ​内置属性(Maven 预定义)​

  • ${project.basedir}:项目根目录
  • ${project.version}:项目版本
  • ${project.groupId}:项目 Group ID
  • ${maven.build.timestamp}:构建时间戳
  • 完整列表见 Maven Properties Reference。

2. ​**pom.xml 内自定义属性**​

<properties> 标签中定义:

<properties><java.version>17</java.version><spring.version>5.3.10</spring.version>
</properties>

使用时:${java.version}${spring.version}


3. ​父 POM 继承的属性

如果项目继承自父 POM(如 Spring Boot Starter Parent):

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.0</version>
</parent>

父 POM 中定义的属性(如 ${java.version})会自动继承。


4. ​Settings.xml 文件中的属性

在 Maven 的全局配置文件 ~/.m2/settings.xml 或项目级 settings.xml 中定义:

<settings><profiles><profile><properties><env>production</env></properties></profile></profiles>
</settings>

使用时:${env}


5. ​命令行动态传入

通过 -D 参数在构建命令中传递:

mvn clean install -Dcustom.property=value

pom.xml 中直接使用 ${custom.property}


6. ​环境变量

系统环境变量可通过 env. 前缀访问:

<!-- 获取操作系统环境变量 -->
<property><path>${env.PATH}</path> 
</property>

7. ​资源过滤(Resource Filtering)​

src/main/resources 目录下的文件(如 application.properties)中定义属性,并通过资源过滤传递到 pom.xml

<build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources>
</build>

优先级顺序(高 → 低):

  1. 命令行参数​(-Dproperty=value
  2. pom.xml 中的 <properties>
  3. 父 POM 中的属性
  4. settings.xml 中的属性
  5. 环境变量
  6. 内置属性

检查属性值来源

  • 通过 mvn help:effective-pom 命令查看最终生效的 POM(包含所有属性解析结果)。
  • 在构建时添加 -X 参数(调试模式)查看详细解析过程:
    mvn clean install -X

通过以上途径,Maven 在构建时会动态替换 pom.xml 中的所有 ${} 占位符。

http://www.lryc.cn/news/592763.html

相关文章:

  • UniApp TabBar 用户头像方案:绕过原生限制的实践
  • React + Mermaid 图表渲染消失问题剖析及 4 种代码级修复方案
  • Java异步日志系统性能优化实践指南:基于Log4j2异步Appender与Disruptor
  • Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解
  • CentOS 7 配置环境变量常见的4种方式
  • 虚拟机centos服务器安装
  • 机器人行业10年巨变从协作机器人到具身智能的萌芽、突破和成长——从 Automatic慕尼黑10 年看协作机器人到具身智能的发展
  • 低代码可视化工作流的系统设计与实现路径研究
  • Linux基础开发工具
  • 智合同丨当AI成为法律人的助手:合同审查效率变革观察
  • 代码随想录算法训练营第二十四天
  • Linux学习之认识Linux的基本指令
  • Linux 环境下 NTP 时间同步与 SSH 免密登录实战
  • 函数返回值问题,以及返回值的使用问题(c/c++)
  • RWA是什么意思?
  • 李天意考研数学精讲课学习笔记(课堂版)
  • elementui-admin构建
  • MBIST - Memory BIST会对memory进行清零吗?
  • PHP 8.0 升级到 PHP 8.1
  • 机器学习17-Mamba
  • 2025年UDP应用抗洪指南:从T级清洗到AI免疫,实战防御UDP洪水攻击
  • 从0开始学习R语言--Day50--ROC曲线
  • C语言—如何生成随机数+原理详细分析
  • 系统IO对于目录的操作
  • 服务器内存满了怎么清理缓存?
  • 多线程-4-线程池
  • 从零构建监控系统:先“完美设计”还是先“敏捷迭代”?
  • 内存数据库的持久化与恢复策略:数据安全性与重启速度的平衡点
  • 数据结构-3(双向链表、循环链表、栈、队列)
  • SGLang 推理框架核心组件解析:请求、内存与缓存的协同工作