Converting Spring Boot JAR into WAR
ปกติการสร้าง 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 ครับ