In Spring boot applications, default packaging is jar which is deployed in embedded servers. If you want to generate a war file for deployment in seperate application server instances such as Jboss, Weblogic or tomcat, then follow below instructions.
Step 1) Declare packaging type ‘war’
First logical step is to declare the packaging type ‘war’ in pom.xml
file.
It indicates the project’s artifact type. Please note that when no packaging is declared, Maven assumes the artifact is the default: jar
.
Step 2) Set embedded server dependency scope to ‘provided’
We may want to have embedded server (e.g. tomcat) in development environment because of its usefulness in fast development lifecycle, but we certainly not want those server jars to be included in finally generated maven artifact or war file. To do so, set scope of embedded server dependency to ‘provided’.
Scope ‘provided’ indicates you expect the JDK or a container to provide the dependency at runtime. This scope is only available on the compilation and test classpath, and is not transitive.
Read more: Dependency Mechanism
War Packaging Demo
In this demo, we are using below 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 >com.howtodoinjava</ groupId > < artifactId >springbootdemo</ artifactId > < version >0.0.1-SNAPSHOT</ version > < packaging >war</ packaging > < name >springbootdemo</ name > < parent > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-parent</ artifactId > < version >2.0.0.RELEASE</ version > </ parent > < properties > < java.version >1.8</ java.version > < project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding > </ properties > < dependencies > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-web</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-tomcat</ artifactId > < scope >provided</ scope > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-hateoas</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-test</ artifactId > </ dependency > </ dependencies > < build > < plugins > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > </ plugin > </ plugins > </ build > < repositories > < repository > < id >repository.spring.release</ id > < name >Spring GA Repository</ name > </ repository > </ repositories > </ project > |
Now run maven build with goal clean install
and it will genearte the project’s war file in target folder as below.
Drop me your questions in comments section.
No comments:
Post a Comment