配置文件讀取pom中的屬性

背景

今天突然需要在一個模塊中讀取該模塊的版本號信息 而版本號定義在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@"讀取

由於該模塊我需要把它做成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();
    	}
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章