搬砖小抄

Spring Boot 项目访问Maven项目属性

字数统计: 432阅读时长: 2 min
2019/09/04 Share

在代码中引用项目信息可以带来很多便利性,比如下面这个日志配置文件的代码片段(logback-spring.xml)

1
2
3
<configuration debug="false" scan="false">
<property name="log-path" value="/var/logs/${project.artifactId}"/>
</configuration>

这样,日志的路径跟Maven项目的artifactId就关联上了(Gradle项目也一样),有利于统一管理,新项目直接把这个日志配置模版拷贝过期就行了。

此外,你也可以在application.yml中访问这些属性,比如

1
2
app.encoding: @project.build.sourceEncoding@
app.java.version: @java.version@

实现方式

如果你的项目继承了spring-boot-starter-parent,那么恭喜,不用做任何配置,直接用就是了。如果不是,就需要在POM中进行以下配置:

<build/>配置里面添加以下内容

1
2
3
4
5
6
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>

添加maven插件

1
2
3
4
5
6
7
8
9
10
11
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>

如果是Gradle项目,配置就更加简单了,具体参考Spring Boot 文档

2020-04-20 补充

实际使用发现,对于Spring Cloud项目,日志配置文件能直接解析project.artifactId,但是普通的Spring Boot项目需要用springProperty包装一下.

logback-spring.xml

1
2
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
<property name="log.path" value="logs/${spring.application.name}"/>

application.properties

1
spring.application.name=@artifactId@

例子:https://gitee.com/WTFPL/boot-logback

CATALOG
  1. 1. 实现方式
  2. 2. 2020-04-20 补充