如何在Maven Assembly插件中获取pom.xml的项目版本(占位符不生效)
Maven Assembly 插件版本占位符配置修复方案
问题根因
- 原有配置中使用的
{version}不符合Maven属性解析规则,Maven标准占位符格式为${属性名},缺少$前缀的字符串会被Assembly插件视为普通文本,不会触发对pom.xml值的匹配解析。 - 不存在无美元符号格式的内置
{version}预定义占位符,因此即使属性名正确,缺少$前缀也无法生效。
修复后配置
将路径字段中的{version}替换为带正确前缀的项目版本属性,直接读取pom中定义的项目版本值:
<id>zip</id> <includeBaseDirectory>true</includeBaseDirectory> <formats> <format>zip</format> </formats> <fileSets> <fileSet> <directory>${project.basedir}/src/root/config</directory> <outputDirectory>${project.version}/config</outputDirectory> </fileSet> <fileSet> <directory>${project.basedir}/common/lib</directory> <outputDirectory>${project.version}/bin/JAVA</outputDirectory> </fileSet> </fileSets>
补充说明
- 优先使用内置属性
${project.version}而非自定义${version},该属性会直接读取pom根节点下的<version>字段,无需额外在<properties>中重复定义,也能避免属性名冲突。 - 3.1.0及以上版本的Maven Assembly插件默认开启路径字段的属性解析,无需额外配置属性处理相关参数即可正常替换值。
- 如果是将Assembly配置内嵌在pom.xml的插件节点中,或是单独抽取为独立的assembly.xml文件,上述属性语法完全通用,无差异。
内容的提问来源于stack exchange,提问作者Naveen kumar
相关产品推荐
相关产品推荐

