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

如何让SpringBoot Maven公共模块的banner.txt自动加载Maven属性

解决方案

方案一:Maven资源过滤直接替换Banner变量(推荐)

直接在模块打包阶段用Maven将banner.txt中的占位符替换为实际版本,无需Spring参与变量解析,子应用引入后即可直接显示正确版本。

步骤:

  1. 修改banner.txt中的占位符,将${banner.version.library}替换为Maven过滤格式@version.library@(避免与Spring的${}语法冲突):
My Application Banner: ${application.title} ${application.formatted-version}

MyLibraryVersion   (v@version.library@)
Spring-Boot        ${spring-boot.formatted-version}
JAVA-VERSION       (v${java.version})
  1. 在模块的pom.xml中配置Maven资源插件,开启对banner.txt的过滤:
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!-- 仅对banner.txt开启过滤,避免影响其他资源文件 -->
            <includes>
                <include>banner.txt</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <!-- 其他资源保持原样,不开启过滤 -->
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>banner.txt</exclude>
            </excludes>
        </resource>
    </resources>
</build>

打包模块时,Maven会自动将@version.library@替换为1.0.0,子应用引入模块后,启动时直接加载替换后的banner.txt,无需任何额外配置。

方案二:SpringBoot自动配置注入属性

通过模块的自动配置机制,将banner.version.library属性自动注入Spring环境,子应用无需手动配置。

步骤:

  1. 在模块中创建src/main/resources/library-banner.properties文件,内容如下(Maven将过滤@version.library@):
banner.version.library=@version.library@
  1. 在pom.xml中配置资源过滤,让Maven处理该properties文件:
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>library-banner.properties</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <!-- 其他资源配置保持原样 -->
    </resources>
</build>
  1. 创建自动配置类BannerAutoConfiguration,加载该属性文件:
package com.example.mylibrarybanner;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:library-banner.properties")
public class BannerAutoConfiguration {
}
  1. 注册自动配置:在模块中创建src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,写入配置类的全限定名:
com.example.mylibrarybanner.BannerAutoConfiguration

子应用引入模块后,SpringBoot会自动加载该配置类,将banner.version.library属性加入环境,banner.txt中的${banner.version.library}即可正常解析,无需子应用做任何额外配置。

方案对比

  • 方案一:最简洁,无需Spring配置,打包阶段直接完成变量替换,性能最优,推荐使用。
  • 方案二:适合需要在Spring环境中复用banner.version.library属性的场景,灵活性更高但配置稍复杂。

内容的提问来源于stack exchange,提问作者Salvatore Bernardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:43:39