亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot項(xiàng)目jar和war打包部署方式詳解

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

jar與war

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

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

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

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

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

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

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

jar包部署運(yùn)行

下面演示將程序打包成jar后運(yùn)行。

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

添加依賴后的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的緩存,開(kāi)發(fā)過(guò)程中無(wú)須重啟
 spring.thymeleaf.cache = false
 #設(shè)置thymeleaf頁(yè)面的編碼
 spring.thymeleaf.encoding=UTF-8
 spring.thymeleaf.mode=HTML5
 #設(shè)置thymeleaf頁(yè)面的后綴
 spring.thymeleaf.suffix=.html
 #設(shè)置thymeleaf頁(yè)面的存儲(chǔ)路徑
 spring.thymeleaf.prefix=classpath:/templates/

(3)完成一個(gè)非常簡(jiǎn)單的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)新建訪問(wèn)入口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è)置項(xiàng)目的啟動(dòng)類,代碼如下:

 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);
     }
 }

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

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

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

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

war包部署運(yùn)行

下面演示將上述程序打包成war后運(yùn)行。

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

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

 <!--當(dāng)將war包配置到Tomcat時(shí),自動(dòng)排除內(nèi)置的Tomcat,避免二者產(chǎn)生沖突-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
     <!--Tomcat依賴只參與編譯、測(cè)試和運(yùn)行等周期。-->
     <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)修改啟動(dòng)類,并繼承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)在項(xiàng)目的根目錄下再次執(zhí)行mvn clean package-DMaven.test.skip=true命令,項(xiàng)目會(huì)自動(dòng)打包為war,打包成功后的文件保存在target目錄下。

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

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

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

相關(guān)文章

最新評(píng)論