用IDEA新建Spring工程時(shí)會(huì)有選項(xiàng)選擇打包成jar或者是war包,其實(shí)項(xiàng)目打包還有一種ear包,三者其實(shí)都是壓縮包皿伺,區(qū)別在于壓縮了什么內(nèi)容。具體可以看這里:jar盒粮、war楷兽、ear打包的異同比规。
一棺滞、打包成jar發(fā)布
Spring Boot默認(rèn)打包成jar的時(shí)候流强,運(yùn)行Application是使用內(nèi)嵌的Tomcat服務(wù)器的,免去了復(fù)雜的配置過程国裳,所以在新工程里只寫了個(gè)Controller就能運(yùn)行起來并且可以被訪問。打包成jar,部署的時(shí)候也可以直接通過
java -jar xxx.jar
運(yùn)行應(yīng)用弃甥,或者通過
nohup java -jar xxx.jar &
讓應(yīng)用在后臺(tái)運(yùn)行,不打印信息汁讼,這種情況下要想結(jié)束進(jìn)程我一般的做法是:
#查找端口號(hào)(如8080)對(duì)應(yīng)的進(jìn)程號(hào)淆攻,如為45500
lsof -i :8080
#殺死進(jìn)程
kill -9 45500
二、打包成war發(fā)布
使用jar包方便是方便嘿架,但是不適于部署包含前后端Web應(yīng)用的項(xiàng)目瓶珊,比如網(wǎng)站;有些情況下必須要使用外部的Tomcat服務(wù)器耸彪。
這時(shí)就需要新建基于war的工程伞芹,或者把jar改成war,怎么改呢蝉娜?
2.1 修改pom.xml
2.1.1 將packaging打包方式改成war
<packaging>war</packaging>
2.1.2 添加外部tomcat的依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2.2 修改Application
//@SpringBootApplication
//public class DemoApplication {
//
// public static void main(String[] args) {
// SpringApplication.run(DemoApplication.class, args);
// }
//}
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2.3 部署
打包成war后唱较,將target目錄下的war包復(fù)制到tomcat服務(wù)器下面的webapps目錄下,啟動(dòng)/重啟tomcat召川,tomcat會(huì)自動(dòng)解壓war南缓,這時(shí)便可以訪問應(yīng)用了。值得注意的是荧呐,訪問路徑要加下war包的名字汉形,比如jar包訪問時(shí)為:localhost:8080/sayHi,war包名為demo.war倍阐,那此時(shí)的訪問路徑應(yīng)為:localhost:8080/demo/sayHi概疆。