欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項目jar和war打包部署方式詳解

 更新時間:2022年09月01日 10:12:12   作者:沈麼鬼  
這篇文章主要為大家介紹了SpringBoot項目jar和war打包部署方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

jar與war

Spring Boot項目開發(fā)完成后,需要以jar或war的方式將項目打包部署到測試開發(fā)環(huán)境。

jar即Java Archive,是Java歸檔文件,該文件格式與平臺無關(guān),它允許將許多文件組合成一個壓縮文件。Java程序都可以打成jar包,目前Docker廣泛使用,Java項目都會打成可執(zhí)行的jar包,最終構(gòu)建為鏡像文件來運行。

jar文件格式基于流行的ZIP文件格式。與ZIP文件不同的是,jar文件不僅用于壓縮和發(fā)布,而且還用于部署和封裝庫、組件和插件程序,并可被編譯器和JVM直接使用。在jar中包含特殊的文件(如manifests和部署描述符),用來指示工具如何處理特定的jar。

war(Web Application Archive)與jar的基本原理相似,它通常表示這是一個Java的Web應(yīng)用程序包,是一個可以直接運行的Web壓縮包,通常用于網(wǎng)站開發(fā),制成war包后部署到容器中(Tomcat或者Jetty)。以Tomcat為例,將war包放置在Tomcat的webapps目錄下,再啟動Tomcat,war包會自動解壓,然后通過瀏覽器訪問,Tomcat會識別war包并自動部署。

注意:war包必須放在webapps下的ROOT目錄下,否則訪問時需要加上該目錄的名稱。

在早期的Servlet和JSP項目中,最終生成的war壓縮包文件按照目錄結(jié)構(gòu)來組織,其根目錄下包含js和jsp文件,或者包含這兩種文件的目錄,另外還有WEB-INF目錄。

在WEB-INF目錄下通常包含一個web.xml文件和一個classes目錄,web.xml是這個應(yīng)用的配置文件,而classes目錄下則包含編譯好的Servlet類和jsp,或包含Servlet所依賴的其他類,如JavaBean。

jar包部署運行

下面演示將程序打包成jar后運行。

(1)創(chuàng)建一個空項目springboot-demo-deploy,并添加項目依賴。

添加依賴后的pom.xml如下:

 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.3.10.RELEASE</version>
     <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <groupId>com.example</groupId>
 <artifactId>springboot-demo-deploy</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>springboot-demo-deploy</name>
 <description>Demo project for Spring Boot</description>
 <!-- 設(shè)置打包方式為jar -->
 <packaging>jar</packaging>
 <properties>
     <java.version>11</java.version>
 </properties>
 <dependencies>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
     </dependency>
 </dependencies>

(2)修改application.properties,添加配置文件

代碼如下:

 #排除靜態(tài)文件夾
 spring.devtools.restart.exclude=static/**,public/**
 #關(guān)閉Thymeleaf的緩存,開發(fā)過程中無須重啟
 spring.thymeleaf.cache = false
 #設(shè)置thymeleaf頁面的編碼
 spring.thymeleaf.encoding=UTF-8
 spring.thymeleaf.mode=HTML5
 #設(shè)置thymeleaf頁面的后綴
 spring.thymeleaf.suffix=.html
 #設(shè)置thymeleaf頁面的存儲路徑
 spring.thymeleaf.prefix=classpath:/templates/

(3)完成一個非常簡單的HelloController()方法

代碼如下:

 package com.example.springbootdemodeploy.controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 @RestController
 public class HelloController {
     @GetMapping("/queryUser")
     public String queryUser(@RequestParam("name")String name){
         return "/hi "+name;
     }
 }

(4)新建訪問入口UserController

代碼如下:

 package com.example.springbootdemodeploy.controller;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 @Controller
 public class UserController {
     @GetMapping("/hi")
     public String queryUser(@RequestParam("name") String name, Model model) {
         model.addAttribute("name", "hi " + name);
         return "hi";
     }
 }

(5)設(shè)置項目的啟動類,代碼如下:

 package com.example.springbootdemodeploy;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 public class SpringbootDemoDeployApplication {
     public static void main(String[] args) {
         SpringApplication.run(SpringbootDemoDeployApplication.class, args);
     }
 }

啟動項目,分別訪問兩個鏈接,即http://localhost:8080/hi?name=cc和http://localhost:8080/queryUser?name=cc,得到正確的返回結(jié)果。

現(xiàn)在將整個項目生成一個jar包,并運行該jar包,再次訪問上述兩個鏈接。

在項目的根目錄下運行Maven命令mvn package-DMaven.test.skip=true,該命令會打包項目且跳過測試,構(gòu)建成功的jar在target目錄下,名稱為springboot-demo-deploy-0.0.1-SNAPSHOT.jar。

在當(dāng)前目錄下運行java -jar springboot-demo-deploy-0.0.1-SNAPSHOT.jar命令,啟動這個jar包,打開瀏覽器,訪問http://localhost:8080/hi?name=cc和http://localhost:8080/queryUser?name=cc,能看到正確的返回結(jié)果。

war包部署運行

下面演示將上述程序打包成war后運行。

(1)修改pom.xml中的<packaging>jar</packaging><packaging>war</packaging>,表示項目的打包方式變成war。

(2)在pom.xml中添加Tomcat的依賴,代碼如下:

 <!--當(dāng)將war包配置到Tomcat時,自動排除內(nèi)置的Tomcat,避免二者產(chǎn)生沖突-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
     <!--Tomcat依賴只參與編譯、測試和運行等周期。-->
     <scope>provided</scope>
 </dependency>

(3)修改build標(biāo)簽,在<build></build>標(biāo)簽內(nèi)指定war文件的名稱。這里設(shè)置war包的名稱為springboot-demo-deploy,代碼如下:

 <build>
     <finalName>springboot-demo-deploy</finalName>
     <plugins>
         <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
             <configuration>
                 <excludes>
                     <exclude>
                         <groupId>org.projectlombok</groupId>
                         <artifactId>lombok</artifactId>
                     </exclude>
                 </excludes>
             </configuration>
         </plugin>
     </plugins>
 </build>

(4)修改啟動類,并繼承SpringBootServletInitializer類,然后重寫config方法,代碼如下:

 package com.example.springbootdemodeploy;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.servlet.support.SpringBootServlet
     Initializer;
 @SpringBootApplication
 public class SpringbootDemoDeployApplication extends SpringBootServlet
     Initializer {
     public static void main(String[] args) {
         SpringApplication.run(SpringbootDemoDeployApplication.class, args);
     }
     @Override
     protected SpringApplicationBuilder configure(SpringApplicationBuilderbuilder) {
         return builder.sources(SpringbootDemoDeployApplication.class);
     }
 }

(5)在項目的根目錄下再次執(zhí)行mvn clean package-DMaven.test.skip=true命令,項目會自動打包為war,打包成功后的文件保存在target目錄下。

把springboot-demo-deploy.war復(fù)制到Tomcat的ROOT目錄下,再執(zhí)行bin目錄下的startup.bat就能啟動該項目。

打開瀏覽器,訪問http://localhost:8080/hi?name=cc和http://localhost:8080/queryUser?name=cc,可以看到顯示正常,war包部署成功。

以上就是SpringBoot項目jar和war打包部署方式詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot jar war打包部署的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論