如何覆盖Manifest中的Built-By属性?配置尝试无效求解
解决maven-jar-plugin自定义Manifest中Built-By条目无效的问题
你遇到的问题核心是配置键名不匹配或参数使用方式错误,以下是两种可行的修复方案:
方案一:直接在manifest节点下配置builtBy参数
maven-jar-plugin的manifest节点提供了builtBy参数,直接配置即可覆盖默认的Built-By值:
<plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.1</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> <builtBy>TESTING</builtBy> <!-- 直接指定自定义Built-By值 --> </manifest> <manifestEntries> <Implementation-Version>${project.version}</Implementation-Version> <Implementation-Build>${project.version}.${git.commit.id.abbrev}</Implementation-Build> </manifestEntries> </archive> <resources> <resource> <!-- 修正笔误:将entityReference改为resource --> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <!-- 修正笔误:补充.号 --> </includes> </resource> </resources> </configuration> </plugin>
方案二:在manifestEntries节点中使用正确的键名
Manifest标准条目名称是Built-By(带横杠),而非你配置的BuiltBy(驼峰),修正键名即可生效:
<plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.1</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Implementation-Version>${project.version}</Implementation-Version> <Implementation-Build>${project.version}.${git.commit.id.abbrev}</Implementation-Build> <Built-By>TESTING</Built-By> <!-- 使用标准条目名称 --> </manifestEntries> </archive> <resources> <resource> <!-- 修正笔误:将entityReference改为resource --> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <!-- 修正笔误:补充.号 --> </includes> </resource> </resources> </configuration> </plugin>
额外说明
- 默认情况下
addBuildEnvironmentEntries为true,maven会自动填充Built-By为当前构建用户,但上述两种配置的自定义值都会覆盖这个默认生成的条目,无需手动关闭该参数。 - 你的resources配置中存在两处笔误:
entityReference应为resource,**/*properties应为**/*.properties,已在方案中修正,否则资源过滤配置不生效。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

