当前位置: 首页 > 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.xdnf.cn/news/1146637.html

相关文章:

  • 基于Qwen2.5-3B-Instruct的LoRA微调与推理实战指南
  • js中的微任务和宏任务的理解
  • 读书笔记:《动手做AI Agent》
  • Android性能优化之UI渲染优化
  • LP-MSPM0G3507学习--05中断及管脚中断
  • CMake指令:常见内置命令行工具( CMake -E )
  • math.h函数
  • CCF编程能力等级认证GESP—C++3级—20250628
  • 20250718-3-Kubernetes 应用程序生命周期管理-Pod对象:存在意义_笔记
  • MyBatis-Flex代码生成
  • jvm分析篇---1、先认识下dump文件
  • b-up:Enzo_Mi:深度学习基础知识
  • 【C语言进阶】题目练习(2)
  • 【51】MFC入门到精通——MFC串口助手(一)---初级版(初始化、串口设置、修改参数、打开/关闭、状态显示),附源码
  • 机器学习基础:线性回归算法详解(原理+代码+实战)
  • Proto文件从入门到精通——现代分布式系统通信的基石(含实战案例)
  • 数据库模型异常问题深度解析:冗余与操作异常
  • 柴油机活塞cad【4张】三维图+设计说明书
  • 小架构step系列18:工具
  • 《每日AI-人工智能-编程日报》--2025年7月18日
  • 【洛谷P1417】烹调方案 题解
  • SQL注入基础尝试
  • 71 模块编程之新增一个字符设备
  • ArcGIS Pro+PS 实现地形渲染效果图
  • 上网行为管理-web认证服务
  • 【C++基础】--多态
  • ThreadLocal 在 Spring 与数据库交互中的应用笔记
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十四天
  • Kubernetes Pod深度理解
  • 大模型格式