目的
在项目启动前,需要获取pom.xml中version进行日志打印。
若采用【在application.properties中,新增配置spring.application.version=@project.version@】+【在java类中,新增类变量@Value(“${spring.application.version}”)】的方式来获取pom.xml内容,是需要SpringApplication.run容器加载后才可以。
因此采用引入maven-model的形式进行获取。
实现
pom
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>3.0</version>
</dependency>
java
try {
String rootPath = System.getProperty("user.dir");// 获取当前项目的根目录,需要注意的是,这里的根目录是最顶级项目的根目录,不是module,存在多个module时,需要在路径中指定
// Properties properties = System.getProperties();// 获取到所有property的key值
MavenXpp3Reader reader = new MavenXpp3Reader();// maven-model中的类
String myPom = rootPath + File.separator + "business-module" + File.separator + "pom.xml";// 指定具体module下的pom.xml
Model model = reader.read(new FileReader(myPom));
String version = model.getVersion();// 获取版本号
System.out.println(version);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (XmlPullParserException e) {
throw new RuntimeException(e);
}