Spring启动运行完全可执行的JAR并指定-D属性

时间:2015-11-22 14:11:23

标签: spring-boot

Spring Boot Maven和Gradle插件现在可以为Linux / Unix操作系统生成完整的可执行档案。运行完全可执行的JAR就像输入一样简单:

$ ./myapp.jar

我的问题是在这种情况下如何设置-D属性,例如

-Dspring.profiles.active=test

另外,如果服务器没有安装jdk,这个完全可执行的jar是否仍然可以运行?

2 个答案:

答案 0 :(得分:35)

有两种方法可以配置这样的属性:

1:

通过在单独的配置文件中指定它们。 Spring Boot将查找名为JARfilename.conf的文件,该文件应存储在与JAR文件相同的文件夹中。在那里,您可以添加环境变量JAVA_OPTS

JAVA_OPTS="-Dpropertykey=propvalue"

2:

或者您可以在执行应用程序之前在shell中指定环境变量的值:

JAVA_OPTS="-Dpropertykey=propvalue" ./myapp.jar

查看文档以获取可用变量的完整列表:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#deployment-service

关于你的第二个问题:要执行JAR,你不需要JDK,JRE就足够了(但如果你没有在服务器上安装任何java,你至少需要它,该应用程序不会运行。

答案 1 :(得分:20)

  

默认情况下,SpringApplication会将任何命令行选项参数(以' - '开头,例如--server.port = 9000)转换为属性并将其添加到Spring环境中。如上所述,命令行属性始终优先于其他属性源。

e.g。

$ java -jar myapp.jar --spring.application.json='{"foo":"bar"}'

请参阅http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/