配置⽂件读取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(){
Version();
}
}