Spring Boot - 从jar文件运行时无法解析占位符

时间:2016-08-18 08:55:49

标签: spring maven properties spring-boot

我遇到了这个奇怪的问题,我可以在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>

我可以在这里找到任何评论,想法吗?

2 个答案:

答案 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配置文件,但是它们配置可执行文件的构建,而不是执行。