我的当前目录是target下面
1、当我这样写的时候:【java -jar -Dspring.profiles.active=prod .\luckymoney-0.0.1-SNAPSHOT.jar】;报错:【Error: Unable to access jarfile .profiles.active=prod】
2、如果我这样写【java -jar .\luckymoney-0.0.1-SNAPSHOT.jar -Dspring.profiles.active=prod】,可以成功运行,但是依旧使用dev的配置
3、如果我这样写【java -jar .\luckymoney-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod】,才是成功运行
请教一下为什么会这样,我是在windows的powershell上输入的命令,其次我的java是1.8,spring-boot是2.1.3.RELEAS
以下内容仅代表个人见解如有不对请指出
当我们使用maven进行项目打包(mvn clean package)的时候会在当前目录下的target文件夹下生成可执行的jar文件。通常情况下我会将其copy出来放在一个待测试的文件夹下面(文件夹名称可自定义)接下来就是使用java -jar 命令启动了。
值得注意的是:在你的项目中存在多个配置文件的时候。例如:application.yml、application-dev.yml、application-prod.yml、或者其他的配置(application-test.yml)。我们将整个项目打包成可执行的jar文件。以上的配置项是包涵在jar内部的。这个时候,若是applicaton.yml中并没有指定运行时的文件。比如没有加入如下配置
spring:
profiles:
active: 配置文件名后缀(例如:dev 、prod、test)
这个可执行的jar是默认加载 application.yml这个配置文件的。此时若是想让其加载我们的 dev、prod、test就需要在 使用这个命令 java -jar -Dspring.profiles.active=prod 可执行jar
对于你们说的不好用,我没出现过。至于在后面加上 --spring.profiles.active=prod 方式也是可以的
在前面使用 -D名称=值 ,是设置系统属性 后面的 -- 是springboot的启动方式
我也遇到同样问题:【java -jar .\luckymoney-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod】,才是成功运行。同问
java -jar -Dspring.profiles.active=prod luckmoney-0.0.1-SNAPSHOT.jar