> For the complete documentation index, see [llms.txt](https://jack80342.gitbook.io/spring-boot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jack80342.gitbook.io/spring-boot/ix.-how-to-guides/74.-properties-and-configuration/74.1.-automatically-expand-properties-at-build-time/74.1.1.-automatic-property-expansion-using-maven.md).

# 74.1.1. 使用Maven自动暴露属性

你可以使用Maven的资源过滤自动暴露来自Maven项目的属性，如果使用`spring-boot-starter-parent`，你可以通过`@..@`占位符引用Maven项目的属性，例如：

```
app.encoding=@project.build.sourceEncoding@
app.java.version=@java.version@
```

**注** 仅对生产配置进行过滤（换句话说，对`src/test/resources`不应用过滤）。

**注** 如果启用`addResources`标识，`spring-boot:run`可以将`src/main/resources`直接添加到classpath（出于热加载目的），这就绕过了资源过滤和本特性。你可以使用`exec:java`目标进行替代，或自定义该插件的配置，具体查看[插件使用页面](https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/maven-plugin/usage.html)。

如果不使用starter parent，你需要将以下片段添加到`pom.xml`中（`<build/>`元素内）：

```markup
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
```

和（`<plugins/>`元素内）：

```markup
<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>
```

**注** 如果你在配置中使用标准的Spring占位符（比如`${placeholder}`）且没有将`useDefaultDelimiters`属性设置为`false`，那构建时这些属性将被暴露出去。
