Spring Boot Tomcat won't start on specific port - java

I want to run a Spring Boot application using Maven but when I run
mvn clean install spring-boot:run -Dserver.port=8888
Spring runs on port 8080. How should I run a Maven Spring Boot application on a specific port?
I use Spring Boot version 2.2.6.

-Dserver.port is not passed to the JVM running your app.
You have to use
mvn clean install spring-boot:run -Dspring-boot.run.arguments="--server.port=8888"
Read more about this:
https://www.baeldung.com/spring-boot-command-line-arguments

Related

How to run java Google App Engine locally with app-gradle-plugin for yaml?

I am using Google App Engine gradle plugin with yaml file, but the plugin version for it has no task appengineRun or appengineStart like the appengine-web.xml version.
TL;DR appengineRun is only available for appengine-web.xml based projects. If you want to use app.yaml, you must provide your own server, for example Spring Boot with Jetty or Tomcat.
To run your application locally, you must provide your own server.
This guide shows how to test your application using app.yaml alongside with the app-gradle-plugin, on section Testing your application with the development server:
During the development phase, you can run and test your application at any time in the development server by invoking Gradle:
gradle jettyRun
Alternatively, you can run Gradle without installing it by using the Gradle wrapper.
As said on this comment on GitHub:
If you want to use app.yaml from your root directory, you must upgrade to Java 11. Learn more here. With the Java 11 runtime, you must provide your own server, for example Spring Boot with Jetty or Tomcat. The appengine:run goal does not work for app.yaml based projects because each server has a different start up command i.e. spring-boot:run for Spring Boot.

How to start up spring-boot application via command line?

I have a spring-boot application which I need to start up by going to the folder directory and start up my web application via command line. I have a class called Application.java and the code inside it is as followed.
#SpringBootApplication(scanBasePackages = {"com.ubs.tas.topcat.dashboard"})
public class Application extends SpringBootServletInitializer {
private static final Logger LOGGER = LoggerFactory.getLogger(Application.class.getName());
private static final Class<Application> applicationClass = Application.class;
#Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
public static void main(String[] args) {
LOGGER.info("Starting...");
SpringApplication.run(Application.class, args);
}
}
I set up classpath then tried to run the command "java ApplicationUtility" but I'm getting this error message "Could not find the main class: ApplicationUtility. Program will exist."
I presume you are trying to compile the application and run it without using an IDE.
I also presume you have maven installed and correctly added maven to your environment variable.
To install and add maven to environment variable visit Install maven if you are under a proxy check out add proxy to maven
Navigate to the root of the project via command line and execute the command
mvn spring-boot:run
The CLI will run your application on the configured port and you can access it just like you would if you start the app in an IDE.
Note: This will work only if you have maven added to your pom.xml
You will need to build the jar file first. Here is the syntax to run the main class from a jar file.
java -jar path/to/your/jarfile.jar fully.qualified.package.Application
If you're using gradle, you can use:
./gradlew bootRun
Run Spring Boot app using Maven
You can also use Maven plugin to run your Spring Boot app. Use the below example to run your Spring Boot app with Maven plugin:
mvn spring-boot:run
Run Spring Boot App with Gradle
And if you use Gradle you can run the Spring Boot app with the following command:
gradle bootRun
To run the spring-boot application, need to follow some step.
Maven setup (ignore if already setup):
a. Install maven from https://maven.apache.org/download.cgi
b. Unzip maven and keep in C drive (you can keep any location. Path location will be changed accordingly).
c. Set MAVEN_HOME in system variable.
d. Set path for maven
Add Maven Plugin to POM.XML
`<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
`
Build Spring Boot Project with Maven
mvn package
or
mvn install / mvn clean install
Run Spring Boot app using Maven:
mvn spring-boot:run
[optional] Run Spring Boot app with java -jar command
java -jar target/mywebserviceapp-0.0.1-SNAPSHOT.jar
1.Run Spring Boot app with java -jar command
To run your Spring Boot app from a command line in a Terminal window you can use java -jar command.
This is provided your Spring Boot app was packaged as an executable jar file.
java -jar target/app-0.0.1-SNAPSHOT.jar
2.Run Spring Boot app using Maven
You can also use Maven plugin to run your Spring Boot app. Use the below command to run your Spring Boot app with Maven plugin:
mvn spring-boot:run
3.Run Spring Boot App with Gradle
And if you use Gradle you can run the Spring Boot app with the following command:
gradle bootRun
Spring Boot provide the plugin with maven.
So you can go to your project directory and run
mvn spring-boot:run
This command line run will be easily when you're using spring-boot-devs-tool with auto reload/restart when you have changed you application.
A Spring Boot project configured through Maven can be run using the following command from the project source folder
mvn spring-boot:run
For macOS user
If you configured your application using maven
First, go to your project directory in the terminal
then simply run
./mvnw spring-boot:run
You are done. Now you can hit localhost with port number.
This command mentioned in the spring official guide.
One of the ways that you can run your spring-boot application from command line is as follows :
1) First go to your project directory in command line [where is your project located ?]
2) Then in the next step you have to create jar file for that, this can be done as
mvnw package [for WINDOWS OS ] or ./mvnw package [for MAC OS] , this will
create jar file for our application.
3) jar file is created in the target sub-directory
4)Now go to target sub directory as jar was created inside of it , i.e cd target
5) Now run the jar file in there.
Use command java -jar name.jar [ name is the name of your created jar file.]
and there you go , you are done . Now you can run project in browser,
http://localhost:port_number
For Maven based projects use this command to run the spring boot application:
mvn spring-boot:run
I was having the same problem, I fixed it by modifying the dependency in the pom. I added web at the end.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-**starter**</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
open cmd from your project path the then at cmd run following cmmands-
1st way to build and run->
mvn clean install
for run only ->
mvn spring-boot:run
1st way to build and run after jar file generated in target folder ->
java -jar target/accounts-0.0.1-SNAPSHOT.jar

SpringBoot 2 debug using the Gradle plugin

I am trying to remote debug a Spring Boot 2.0 web application, built and run with the new Spring Boot Gradle plugin. I've read that the way to go is to pass the --debug-jvm option like so:
./gradlew bootRun --debug-jvm
But I get the following:
Problem configuring task :bootRun from command line.
> Unknown command-line option '--debug-jvm'.
Has something changed in Spring Boot 2.0 or am I missing something? The new gradle plugin reference does not mention anything regarding debug.
I am running Spring Boot and spring-boot-gradle-plugin version 2.0.0.M6, gradle version 4.3.1.
The following would work:
Edit build.gradle
bootRun {
jvmArgs = ["-agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n"]
}
Execute./gradlew bootRun
Attach the debugger after the Spring Boot application has started (port 8000 in the specific case)

Configure Docker container for spring boot micro services

I am new in docker, I want to know how to install dependency locally in maven while using docker compose yml file.
Like, I have 3 micro services and those I configured in docker-compose.yml file but I want one dependency to be installed in local maven using maven install so that I can use that dependency in other micro services by importing.
Is this possible ?
Thanks in advance.

Executing without spring-boot:run failed

I can't run my spring boot app simply with java -jar because it doesn't listen to the port. But if I run the same app with Intellij idea and spring boot maven plugin with command spring-boot:run its ok. Why?

Categories