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

多模块Maven项目中公共模块如何获取应用版本

实现方案

要让公共模块C的/deployedVersion接口返回所在应用(A或B)的版本,核心思路是让应用A、B各自提供版本信息,公共模块依赖这个信息返回结果,具体步骤如下:

1. 在公共模块C中定义版本获取抽象层与接口

首先在C里搭建基础的抽象逻辑和REST接口:

定义版本提供接口

// 模块C中
public interface VersionProvider {
    String getDeployedVersion();
}

创建REST接口

// 模块C中
@RestController
public class VersionController {
    private final VersionProvider versionProvider;

    // 构造注入,由应用A/B提供具体实现类
    public VersionController(VersionProvider versionProvider) {
        this.versionProvider = versionProvider;
    }

    @GetMapping("/deployedVersion")
    public String getDeployedVersion() {
        return versionProvider.getDeployedVersion();
    }
}

2. 在应用A、B中实现版本提供器并注入自身版本

每个应用需要把自身pom.xml里的版本号传递给公共模块,这里用Maven资源过滤+Spring属性注入的方式实现:

步骤1:配置Maven资源过滤

在应用A的pom.xml中开启资源过滤,让Maven自动替换${project.version}为实际版本号:

<!-- 应用A的pom.xml -->
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

步骤2:创建版本属性文件

在应用A的src/main/resources下新建version.properties:

app.version=${project.version}

步骤3:实现VersionProvider接口

在应用A中实现公共模块的VersionProvider,读取属性文件中的版本号:

// 应用A中
@Component
public class AppAVersionProvider implements VersionProvider {
    private final String appVersion;

    public AppAVersionProvider(@Value("${app.version}") String appVersion) {
        this.appVersion = appVersion;
    }

    @Override
    public String getDeployedVersion() {
        return appVersion;
    }
}

应用B重复上述操作:配置pom资源过滤、创建version.properties、实现AppBVersionProvider即可。

3. 依赖与打包验证

  • 在应用A、B的pom.xml中引入公共模块C的依赖:
<!-- 应用A/B的pom.xml -->
<dependency>
    <groupId>你的项目groupId</groupId>
    <artifactId>module-c</artifactId>
    <version>模块C的版本号</version>
</dependency>
  • 执行mvn clean package打包应用A/B时,Maven会自动将version.properties中的${project.version}替换为当前应用的版本号;启动应用后,访问appA/deployedVersion或appB/deployedVersion就能得到对应应用的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:42:37