记一次纠错过程
一开始,我是把如下加在父工程的pom.xml中
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimit>$</delimit>
</delimiters>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
然后在服务模块的application.yml中配置info信息:
info:
app.name: xns-servicecloud
company.name: www.xns.com
build.artifactId: $project.artifactId$
build.version: $project.version$
跟着教程走的,人家确实出来了,我的确是这样:
然后开始百度,各种方法都试了,都不行,直到看到这一篇spring cloud yml配置
获取不到值问题处理,他说: “application.yml,${parameter}则是读取文件内部的变量值
若想读取pom.xml文件的变量应该使用@parameter@” ,于是我就按他的方法改成了
info:
app.name: xns-servicecloud
company.name: www.xns.com
build.artifactId: "@project.artifactId@"
build.version: "@project.version@"
注意:"@project.version@",一定要加双引号,不然会报错,加单引号,也行。
把pom.xml中的’$‘符号改成’@'符号
但是还是不能动态取值,然后经过几次尝试,最终解决办法为:
yml配置不变,为:
info:
app.name: xns-servicecloud
company.name: www.xns.com
build.artifactId: "@project.artifactId@"
build.version: "@project.version@"
但是要把如下加在配置info的子模块的pom.xml中,这样,再运行就获取到了
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
如果用 @project.version@的话,不用在pom.xml中加
<configuration>
<delimiters>
<delimit>@</delimit>
</delimiters>
</configuration>
因为默认的为@
使用$$动态取
改好之后,在百度上看到有人说要把delimit改成delimiter,尝试之后,发现只要改成这样,就可以使用"$project.artifactId $"来获取呢,设置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimiter>$</delimiter>
</delimiters>
</configuration>
</plugin>
但是注意下面这个要放在配置info的子模块的pom.xml中,然后之间写什么符号,就在yml中用什么符号
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
yml配置info如下:
info:
app.name: xns-servicecloud
company.name: www.xns.com
build.artifactId: $project.artifactId$
build.version: $project.version$
每个版本可能不同,如有错误,请指正