Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring引导进行Maven资源筛选:无法解析占位符_Java_Spring_Maven_Spring Boot - Fatal编程技术网

Java 使用Spring引导进行Maven资源筛选:无法解析占位符

Java 使用Spring引导进行Maven资源筛选:无法解析占位符,java,spring,maven,spring-boot,Java,Spring,Maven,Spring Boot,对Java和Maven来说有点陌生,但是我试图让Maven处理数据库连接属性,这样我就可以让Maven构建在dev/stage/prod环境之间更改它们,我遇到了过滤和资源方面的问题。我也不知道我做错了什么 POM文件: 4.0.0 com.comapny 报告 0.0.1-快照 罐子 报告 http://maven.apache.org jdbc:aURL 奥塞尔 阿帕斯word UTF-8 4.2.3.1发布 4.1.4.1发布 2.7.1.2.3.4.2-1 1.1.2.2.3.4.2-

对Java和Maven来说有点陌生,但是我试图让Maven处理数据库连接属性,这样我就可以让Maven构建在dev/stage/prod环境之间更改它们,我遇到了过滤和资源方面的问题。我也不知道我做错了什么

POM文件:


4.0.0
com.comapny
报告
0.0.1-快照
罐子
报告
http://maven.apache.org
jdbc:aURL
奥塞尔
阿帕斯word
UTF-8
4.2.3.1发布
4.1.4.1发布
2.7.1.2.3.4.2-1
1.1.2.2.3.4.2-1
4.4.0.2.3.4.2-1
4.12
1.4.3
org.springframework.boot
spring启动程序父级
1.3.0.1发布
github发布
http://oss.sonatype.org/content/repositories/github-releases/
clojars.org
http://clojars.org/repo
钟表厂
http://repo.hortonworks.com/content/repositories/releases/
twitter4j
http://twitter4j.org/maven2
org.springframework.boot
SpringBootStarterWeb
org.springframework
春豆
org.springframework
spring上下文
薛西斯
干细胞移植
2.9.1
沙兰
沙兰
2.7.1
jdk.tools
jdk.tools
1.7.0_05
系统
${JAVA_HOME}/lib/tools.jar
org.apache.phoenix
凤凰核心
${phoenix.version}
org.slf4j
log4j-over-slf4j
org.slf4j
slf4j-log4j12
公共dbcp
公共dbcp
1.4
org.springframework
SpringJDBC
org.mortbay.jetty
码头
6.1.26
org.mortbay.jetty
斯伦金码头
6.1.26
org.apache.hadoop
hadoop客户端
${hadoop.version}
org.slf4j
slf4j-log4j12
org.apache.hbase
hbase客户端
${hbase.version}
org.slf4j
log4j-over-slf4j
org.slf4j
slf4j-log4j12
javax.mail
梅拉皮
${mail.version}
javax.mail
邮件
${mail.version}
org.codehaus.jackson
杰克逊地图绘制者
1.9.13
org.apache.logging.log4j
log4japi
2.5
org.apache.logging.log4j
log4j型芯
2.5
com.github.omkreddy
log4j2卡夫卡追加器
1
org.apache.kafka
卡夫卡客户
0.9.0.0
朱尼特
朱尼特
测试
org.springframework
弹簧试验
测试
org.springframework.boot
springbootmaven插件
org.apache.maven.plugins
maven资源插件
2.7
UTF-8
org.apache.maven.plugins
maven编译器插件
3.5.1
1.8
1.8
假的
src/main/resources
真的
db.properties
src/测试/资源
真的
db.properties

db.properties

jdbc.url= ${db.jdbcUrl}
jdbc.username= ${db.jdbcUn}
jdbc.password= ${db.jdbcPw}
Maven版本3.3.8

JDK 1.8.0-72

命令行

mvn test -P development -X
错误


非常感谢您的帮助。

首先,您不需要使用个人资料。资源
db.properties
是一个测试资源,因此它应该位于
src/test/resources
下,而不是
src/main/resources
下。使用配置文件将使构建复杂化,您应该将其作为最后一个条件

出现此问题的原因是Spring Boot将令牌筛选器重新定义为
@
,而不是默认的
${*}
。发件人:

如果您是从
spring boot starter父级继承的
POM,那么
maven资源插件的默认过滤器令牌
已从
${*}
更改为
@
(即
@maven.token@
而不是
${maven.token}
),以防止与spring样式的占位符发生冲突。如果已直接为
应用程序.properties
启用maven筛选,则可能还需要将默认筛选标记更改为使用其他分隔符

这意味着您应该:

jdbc.url=@db.jdbcUrl@
jdbc.username=@db.jdbcUn@
jdbc.password=@db.jdbcPw@
用于
db.properties
文件

然后,您需要删除
部分,并将其替换为:


src/测试/资源
真的
db.properties

我以前回答过这样一个问题,请看:@JorgeCampos这实际上是我在发布之前尝试的解决方案之一。为了防止人们狩猎,在SB 1.3.0中对其进行了更改。下面是github.com/spring projects/spring boot/wiki/…–mdo123I完全错过了
${…}
@…@
,从未想过这可能是一个令牌问题。非常感谢。
 java.lang.IllegalArgumentException: Could not resolve placeholder 'db.jdbcUrl' in string value "${db.jdbcUrl}"