SpringBoot如何读取pom.xml中的值
如何读取pom.xml中的值
首先,Java代码中是无法直接读取pom.xml中的内容的,需要先把值转到xxx.properties中,再通过程序读取xxx.properties中对应的值。
xxx.properties读取pom.xml
1.xxx.properties中
以pom.xml中的version标签为例。@xx@代表读取pom.xml中的值
这里为什么是用@呢:
由于${}方式会被maven处理。如果你pom继承了spring-boot-starter-parent,Spring Boot已经将maven-resources-plugins默认的${}方式改为了@@方式,如@name@
2.pom.xml中
在rescource加入
<resource>
<directory>class="lazy" data-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文件
这个就比较常规了
<modelVersion>4.0.0</modelVersion>
<groupId>com.didispace</groupId>
<artifactId>Chapter4-2-2</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
@Value("${project.version}")
private String version;
SpringBoot读取pom配置报错
创建父子maven工程时,maven配置文件pom.xml报错;
我的父工程存在多种环境配置,使用${xxx}占位符方式进行引入配置文件版本管理;创建maven子工程时报错,如图报错提示:
报错原因
由于方式会被maven处理。如果你pom继承了spring−boot−starter−parent,SpringBoot已经将maven−resources−plugins默认的‘{}方式会被maven处理。如果你pom继承了spring-boot-starter-parent, Spring Boot已经将maven-resources-plugins默认的`方式会被maven处理。如果你pom继承了spring−boot−starter−parent,SpringBoot已经将maven−resources−plugins默认的‘{xxx}`方式改为了@@方式,如@name@,所以会出现上述报错情况;
解决方法
如果还想继续使用${xxx}占位符方式,只需要在父工程pom.xml文件中加上下面配置即可:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</pluginManagement>
如图所示:
更新maven工程,报错问题解决
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341