You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven资源过滤中${project.name}是否可能为空?求权威参考

关于${project.name}在资源过滤中的默认值问题

嗨,这个问题我刚好有过相关验证,给你明确的结论:即使你的POM里完全没写<name>标签,${project.name}在资源过滤时也绝对不会返回null,它一定会被赋予一个有效值。

具体的默认逻辑

当POM中未声明<name>元素时,Maven的核心模型处理机制会自动把project.name的值设为和你的<artifactId>一模一样的内容。这是Maven内置的兜底行为,不需要你做任何额外配置。

权威依据

这个行为是有官方规范和代码实现支撑的:

  • 在Maven核心代码的org.apache.maven.model.Model相关处理逻辑里(比如ModelUtils类的合并或初始化方法),明确处理了当name字段为null的情况——直接用artifactId的值来填充。
  • Maven官方的POM参考文档中,对<name>元素的定位是用于报告、文档生成等场景,当用户不指定时,Maven会用最核心的项目标识(artifactId)来替代,以此保证这个变量始终处于可用状态。

快速验证方法

如果你想自己确认,做个小测试就行:

  • 新建一个Maven项目,刻意不写<name>标签
  • 在src/main/resources下建个test.txt,内容写Project Name: ${project.name}
  • 执行mvn resources:resources命令触发资源过滤
  • 去target/classes下查看生成的test.txt,会发现里面的内容就是你的项目artifactId,完全不会是空值或者null

内容的提问来源于stack exchange,提问作者Garret Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:15:45