1

我正在将JCommander API用于 Spring Boot - Spring Batch 项目。

项目有多个作业,我需要将作业名称作为参数传递,以便启动特定作业。

java -jar myJar.jar -jobName job1

现在,如果我job1正在运行并且我希望job2在那个时候启动,我不能这样做,因为port is already in use。所以我job2只能在job1完成后启动。

如果我尝试job2在不同的端口启动,

java -jar myJar.jar -jobName job2 --server.port=8090

然后 jCommander 不会让它通过,因为我没有server.port在 JCommander 配置中定义,即使我这样做了,Spring Boot 只会从属性文件中选择属性并尝试在同一个端口上运行 - 8080

如何处理这种情况?

4

1 回答 1

0

Spring Boot 的文档说:

您可以使用属性文件、YAML 文件、环境变量和命令行参数来外部化配置。

您应该能够像这样配置 server.port :

java -jar myJar.jar -Dserver.port=8090 -jobName job2

afaik 你也可以设置SERVER_PORT环境变量:

SERVER_PORT=8090 java -jar myJar.jar -jobName job2
于 2017-07-13T09:01:06.007 回答