背景
今天突然需要在一個模塊中讀取該模塊的版本號信息 而版本號定義在pom中 如果在到配置文件裏寫一份 那麼需要修改2處地方 可能會不一致 所以就想有沒有辦法直接讀取pom中的project.version
解決思路
直接讀取pom中的內容 可以通過mvn package 打包時直接讀取pom中的內容替換配置文件中的內容 步驟如下
- 在pom裏的build的resources下添加如下配置
<resource> <directory>src/main/resources/</directory> <filtering>true</filtering> </resource>
- 使用配置
直接運行的話 properties讀取的是${xxx} yml讀取的是@xxx@ 所以需要打包運行後才能讀取正確的值
- properties文件
使用${project.version}讀取 - yml文件
使用${project.version}讀取直接運行會報錯 需要打包後運行jar包 爲了解決該問題使用"@project.version@"讀取
- properties文件
由於該模塊我需要把它做成jar包 在工程中引用 所以在主工程配置後讀取的是主工程的版本號 而不是jar包模塊的版本號 爲了解決該問題步驟如下
- 在模塊pom裏的build的resources下添加如下配置
<resource> <directory>src/main/resources/</directory> <filtering>true</filtering> </resource>
- 在resource裏添加module-version.properties文件 內容如下
module.version=${project.version}
- 添加ModuleVersion類
@Configuration @ConfigurationProperties(prefix = "plugin",ignoreUnknownFields = false) @PropertySource("classpath:/plugin-version.properties") @Data public class ModuleVersion { private String version; }
- 使用ModelVersion類
@Data @Configuration @EnableConfigurationProperties(ModuleVersion.class) public class ModuleMate { @Resource @Getter(AccessLevel.NONE) private ModuleVersion moduleVersion; public String getVersion(){ return moduleVersion.getVersion(); } }