Converting Spring Boot JAR into WAR

Chiwa Kantawong (Pea)
1 min readMar 16, 2017

--

ปกติการสร้าง Application ด้วย Spring Boots เรามักจะได้ JAR file
ซึ่งสามารถเอาไป Execute ได้เลย
เนื่องจาก Spring Boot ได้ Embedded Tomcat ให้เราแล้วเรียบร้อย แต่ก็มีบางท่านที่อยากได้ WAR file ที่สร้างจาก Spring Boot เพื่อเอาไป deploy บน Application Server อื่นๆ ได้ ก็มีวิธีง่ายๆ ไม่ยุ่งยากเลยครับ เริ่มต้นจาก pom.xml ของเราก่อน

<?xml version="1.0" encoding="UTF-8"?>
<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>zengcode.medium.com</groupId>
<artifactId>application</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
<relativePath/>
</parent>
<!-- <properties>
<start-class>com.xxx.ForWAR</start-class>
</properties> -->
<packaging>war</packaging> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

ใน <packaging> ให้เป็น war นะครับ และระบุ spring-boot-starter-tomcat ให้ scope เป็น provider

ใน Spring Boot Application ให้ทำตามนี้ได้เลยครับ

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

เมื่อ เรารัน mvn clean install เราก็จะได้ application-0.0.1-SNAPSHOT.war

แต่เราก็ยังสามารถ run ด้วย java ได้ด้วย
java -jar application-0.0.1-SNAPSHOT.war

เรียบร้อยโรงเรียน Spring Boot ครับ

--

--

Chiwa Kantawong (Pea)
Chiwa Kantawong (Pea)

Written by Chiwa Kantawong (Pea)

Software Development Expert at Central Tech

Responses (1)