一添诉、前言
?1.作為后臺(tái)開發(fā)屁桑,項(xiàng)目打包部署是經(jīng)常性的操作。當(dāng)我們完成某一階段的開發(fā)之后就要進(jìn)入測(cè)試階段栏赴,這就需要我們打成jar
或者war
包部署在服務(wù)器蘑斧,方便測(cè)試人員進(jìn)行測(cè)試。spring boot
打包有多種方式须眷,比如打成jar
竖瘾、或者war
,亦或者通過(guò)jekins
進(jìn)行打包部署花颗。
?2.本篇文章主要介紹怎么如何打成jar
和war
部署捕传。
二、 jar形式
- 2.1
在pom.xml
中添加插件
<groupId>com.example</groupId>
<artifactId>springboot-upload</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
//注意把packaging標(biāo)簽改為jar,此標(biāo)簽也可不寫扩劝,默認(rèn)打包方式為jar乐横。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
- 2.2 idea插件打包
?在IDEA
右側(cè)Maven Projects
欄雙擊package
等待Build Success
即可
- 2.3 maven命令行打包
??a.黑窗口cd到根目錄(和pom.xml
、target
同級(jí))今野,也可在idea工具中選擇Terminal
??b.執(zhí)行打包命令 mvn clean package
(跳過(guò)測(cè)試類命令 mvn clean package -Dmaven.test.skip=true
)
??c. 出現(xiàn)如下表示打包成功:
- 2.4 啟動(dòng)項(xiàng)目
?? a.打包完成后jar
包會(huì)生成到target
目錄下,命名一般是 項(xiàng)目名+版本號(hào).jar罐农。如下圖
啟動(dòng)項(xiàng)目:在
windows
下条霜,cmd
到target
目錄下,也可在target
目錄下按shift
+右鍵打開命令行,涵亏,然后執(zhí)行java -jar 項(xiàng)目名+版本號(hào).jar宰睡。
??b.現(xiàn)演示在Linux
下操作:首先把ja
r包通過(guò)xshell
等工具上傳到指定的Linux
文件夾下,我這上傳位置為home/project
??c.輸入
java -jar springboot-upload-0.0.1-SNAPSHOT.jar
??這種方式啟動(dòng)有一個(gè)弊端气筋,就是只要控制臺(tái)關(guān)閉拆内,服務(wù)就不能訪問(wèn)了。通過(guò)以下命令可以確保關(guān)閉后也可運(yùn)行宠默,即后臺(tái)運(yùn)行的方式啟動(dòng):
nohup java -jar springboot-upload-0.0.1-SNAPSHOT.jar &
??也可以在啟動(dòng)的時(shí)候選擇讀取不同的配置文件
java -jar springboot-upload-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
-
2.5 出現(xiàn)的問(wèn)題
?解決方案:
??(1)配置中添加spring.thymeleaf.prefix=classpath:/templates
??(2)指向模板的路徑 不加 /
三麸恍、 war形式
打成
war
包放到tomcat
服務(wù)器下。
- 3.1
pom.xml
中把jar
改成war
<packaging>war</packaging>
- 3.2 添加外置
tomcat
依賴
<!--打包時(shí)排除tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在這里將
scope
屬性設(shè)置為provided
搀矫,這樣在最終形成的WAR
中不會(huì)包含這個(gè)JAR
包抹沪,因?yàn)?code>Tomcat或Jetty
等服務(wù)器在運(yùn)行時(shí)將會(huì)提供相關(guān)的API
類。
- 3.3 在入口類中繼承
SpringBootServletInitializer
并重寫configure
方法
@SpringBootApplication
public class SpringbootUploadApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringbootUploadApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
return builder.sources(SpringbootUploadApplication.class);
}
}
- 3.4 輸入命令
mvn clean package
打包瓤球,把target
目錄下生成的war
放到tomcat
的webapps
目錄下即可融欧。
?然后cd
到tomcat
的bin
目錄下,執(zhí)行./startup.sh
卦羡。
?在tomcat
運(yùn)行時(shí)會(huì)自動(dòng)將war
解壓
-
3.5 出現(xiàn)的問(wèn)題
?網(wǎng)上說(shuō)可能tomcat
版本問(wèn)題或者tomcat
中某些文件修改了噪馏,我當(dāng)時(shí)選的版本是tomcat7
麦到,然后改成tomcat8
就能正常啟動(dòng)和訪問(wèn)了。
-
3.6 總結(jié)
?1欠肾、pom
文件中jar
改成war
?2瓶颠、添加外置的tomcat
依賴
?3、入口類繼承SpringBootServletInitializer
并重寫configure
方法
?4董济、項(xiàng)目訪問(wèn)路徑ip:port/jar
名稱
?5步清、tomcat
版本問(wèn)題