36

I currently working on an Spring Boot application written in Java 8 using Gradle. What I am looking for is to pass as an argument the server port when running the Jar from the command line.

For example:

  • java -jar myApplication.jar --port=8888: This runs my Spring boot application using port 8888
  • java -jar myApplication.jar: Since no port number is passed as argument, the spring boot application should run on a default port number (let's say 8080)

Can anyone help me with this ?

Michu93
  • 5,058
  • 7
  • 47
  • 80
T code
  • 447
  • 2
  • 7
  • 12

3 Answers3

66

From Spring boot documentation, the command line is :

java -Dserver.port=8888 -jar myApplication.jar

You can also use Spring boot configuration file as described in the documentation.

Mickael
  • 4,458
  • 2
  • 28
  • 40
8

Caution Always pass the -D<key>=<value> JVM parameters before the -jar arguments otherwise it wouldn't accept your parameters and then it will run with default values. e.g:

Correct java command to execute the jar on a particular port is:

java -Dserver.port=8888 -jar target/my-application-jar-path.jar

The above command will run the JVM on the port 8888 but the below command

java -jar target/my-application-jar-path.jar -Dserver.port=8888

Will run on the port 8080, it will ignore the JVM parameters after -jar

Best practice in spring-boot application is to set the server.port into the application.properties file as:

server.port=9090

Or on the particular application-<ENV>.properties file with specific ENVIROMENT.

krishna Prasad
  • 3,541
  • 1
  • 34
  • 44
3

For SpringBoot use:

 java -jar app.jar --server.port=9000

(taken from 2.1. Accessing Command Line Properties in the Spring documents)