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

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

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

**注** 如果启用`addResources`标识，`spring-boot:run`可以将`src/main/resources`直接添加到classpath（出于热加载目的），这就绕过了资源过滤和本特性。你可以使用`exec:java`目标进行替代，或自定义该插件的配置，具体查看[插件使用页面](http://docs.spring.io/spring-boot/docs/1.4.1.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占位符（比如`${foo}`）且没有将`useDefaultDelimiters`属性设置为`false`，那构建时这些属性将被暴露出去。
