在 Spring Boot 项目中,引用 Maven pom.xml 文件的 <profile> 标签下面的 <properties> 标签中定义的属性时引用失败。例如:pom.xml 部分配置如下:
<profiles>
<profile>
<id>dev</id>
<properties>
<jdbc.url>jdbc:mysql://localhost:3306/test</jdbc.url>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
<jdbc.username>root</jdbc.username>
<jdbc.password>aaaaaa</jdbc.password>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>Spring Boot 的 application.properties 文件配置如下:
jdbc.driver=${jdbc.driver}
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}导致该问题是因为 Spring Boot 修改了 Maven 默认的 ${} 占位符,换成了 @@ 方式。将 application.properties 文件配置修改如下:
jdbc.driver=@jdbc.driver@
jdbc.url=@jdbc.url@
jdbc.username=@jdbc.username@
jdbc.password=@jdbc.password@执行 maven 的 package 命令,替换成功了。结果如下:
jdbc.driver=co.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=aaaaaa在 IDEA 中,进入 pom.xml 文件,点击 <parent> 标签下面的 <version> 标签,进入到 spring-boot-starter-parent.*.pom 文件,如下:
(1)自己 pom 文件中的 <parent> 标签
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>(2)点击 <version> 标签中的 “2.0.3.RELEASE” 后,进入 spring-boot-starter-parent-2.0.3.RELEASE.pom 文件。在该 pom 文件中,<properties> 定义了占位符为“@”,如下:
<properties>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<resource.delimiter>@</resource.delimiter>
<maven.compiler.source>${java.version}</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>同时,还配置了 maven-resources-plugin 插件,该插件禁用了默认的占位符,替换为 @。如下:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<!-- 声明自己的占位符 -->
<delimiter>${resource.delimiter}</delimiter>
</delimiters>
<!-- 禁用默认占位符 -->
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>更多关于 maven-resources-plugin 插件信息请查看:
http://maven.apache.org/plugins/maven-resources-plugin/resources-mojo.html