原文链接:https://www.reinforce.cn/t/608.html
首先,Java代码中是无法直接读取pom.xml中的内容的,需要先把值转到xxx.properties中,再通过程序读取xxx.properties中对应的值。
一、xxx.properties读取pom.xml
1.xxx.properties中
以pom.xml中的version标签为例。@xx@代表读取pom.xml中的值
project.version=@project.version@
这里为什么是用@呢:
由于${}方式会被maven处理。如果你pom继承了spring-boot-starter-parent,Spring Boot已经将maven-resources-plugins默认的${}方式改为了@@方式,如@name@
2.pom.xml中
在rescource加入
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**.*</include>
<include>**/**.*</include>
</includes>
<filtering>true</filtering>
</resource>
比如证书文件,不做任何处理的话会抛出异常加入这个标签会后,*.xml、*.properties正常,其他文件的内容可能会发生改变。
DerInputStream.getLength(): lengthTag=111, too big
解决方案是把把不需要过滤的文件单独列出来,从maven-resources-plugin插件中排除
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<!-- 过滤后缀为pem、pfx的证书文件 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pem</nonFilteredFileExtension>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>css</nonFilteredFileExtension>
<nonFilteredFileExtension>js</nonFilteredFileExtension>
<nonFilteredFileExtension>html</nonFilteredFileExtension>
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
二、读取xxx.properties文件
这个就比较常规了
@Value("${project.version}")
private String version;
最后输出到页面