This is
continuation to my previous post. In my previous post, I explained how to
generate UBER jar for a spring boot application using spring boot maven plugin.
Suppose,
if your application has more than one main class, how can you specify the main
class to be executed in the application jar.
Using <configuration>
element, you can specify the main class.
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.sample.app.App1</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Find the
below working application.
package com.sample.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App1 { public static void main(String[] args) { System.out.println("I am in App1 class"); SpringApplication.run(App1.class, args); } }
App2.java
package com.sample.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App2 { public static void main(String[] args) { System.out.println("I am in App2 class"); SpringApplication.run(App1.class, args); } }
HomeController.java
package com.sample.app.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HomeController { @RequestMapping("/") public String homePage() { return "Welcome to Spring boot Application Development"; } }
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springbootMisc</groupId> <artifactId>springbootMisc</artifactId> <version>1</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> </parent> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.sample.app.App2</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Total
project structure looks like below.
Generate
UBER jar file
Right
click on project.
Run As -> Run Configurations…
Mention
‘package’ in goals section and click on Run button.
It
generates a jar file in project target directory.
$ls *jar
springbootMisc-1.jar
Run the
jar file by executing the command ‘java -jar {jarFile}’
$java -jar springbootMisc-1.jar You can see below messages in console. $java -jar springbootMisc-1.jar I am in App2 class . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/
You can
download the complete working application from this link.
No comments:
Post a Comment