我遇到了这个奇怪的问题,我可以在Intellij中运行我的Spring Boot应用程序,但是当我这样做时:
mvn clean package -Pst -Dspring.profiles.active=st && java -jar target/myapp-0.0.1-SNAPSHOT.jar
我可以看到错误,说Spring Boot无法解析@Value占位符。
ERROR o.s.boot.SpringApplication - Application startup failed
java.lang.IllegalArgumentException: Could not resolve placeholder
我做的调查是获取jar文件并像使用jar xf myapp.jar
一样提取文件,我可以在类路径根目录中看到属性文件。最初我遇到了这个问题,Maven没有从main/resource
文件夹中打包我的属性和静态,但我已经用以下方法解决了这个问题:
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>static</directory>
<targetPath>static</targetPath>
</resource>
我可以在这里找到任何评论,想法吗?
答案 0 :(得分:0)
我设法解决了这个问题。它真的很有线,似乎我需要告诉java在哪个配置文件中运行jar,例如 - spring.profiles.active = st 。
mvn clean package -Pst -Dspring.profiles.active=st && java -jar target/myapp-0.0.1-SNAPSHOT.jar --spring.profiles.active=st
答案 1 :(得分:0)
这不是Maven决定使用什么Spring Profile,而是在每次执行jar期间的Spring容器。不同的配置文件均可用。 Spring配置文件用于通过配置使可执行文件适应不同的环境。
还有Maven配置文件,但是它们配置可执行文件的构建,而不是执行。