一.簡(jiǎn)介:
熱部署就是正在運(yùn)行狀態(tài)的應(yīng)用,修改了他的源碼之后,在不重新啟動(dòng)的情況下能夠自動(dòng)把增量?jī)?nèi)容編譯并部署到服務(wù)器上,使得修改立即生效。熱部署為了解決的問題有兩個(gè), 一是在開發(fā)的時(shí)候,修改代碼后不需要重啟應(yīng)用就能看到效果,大大提升開發(fā)效率;二是生產(chǎn)上運(yùn)行的程序,可以在不停止運(yùn)行的情況下進(jìn)行升級(jí),不影響用戶使用。
二.idea開啟熱部署:
a.Tomcat熱部署
-
在頂部找到程序運(yùn)行操作欄, 點(diǎn)擊Edit Configurations
image.png
2.點(diǎn)擊你要配置的tomcat,點(diǎn)擊deployment,點(diǎn)擊”+“
image.png
3.然后選擇你要部署的war包,熱部署必須要選擇帶有exploded的war包
image.png
4.再切換回Server,按照下圖標(biāo)注配置
image.png
配置完后點(diǎn)擊ok即可啟動(dòng)你的tomcat,然后改一下jsp、java文件實(shí)現(xiàn)熱部署配置是否成功
最后提示一下,Idea熱部署并非絕對(duì)實(shí)時(shí), 還是會(huì)有延時(shí)的,假如你手速快的話可能會(huì)出現(xiàn)改了并沒有馬上生效。所以此時(shí)不要懷疑熱部署沒有配置成功,稍微等一會(huì)你會(huì)看到開發(fā)工具左下角會(huì)有一個(gè)class reload的提示,出現(xiàn)這個(gè)提示才說明已經(jīng)熱部署完成了。
image.png
如果你想馬上生效的話,可以點(diǎn)擊下圖標(biāo)標(biāo)注的按鈕,或者使用快捷鍵Ctrl + F10
image.png
b.Spring boot程序熱部署
在頂部找到程序運(yùn)行操作欄, 點(diǎn)擊Edit Configurations,點(diǎn)擊要配置的程序,按照下圖標(biāo)注地方配置
image.png
配置完后點(diǎn)擊ok即可啟動(dòng)你的程序,java文件實(shí)現(xiàn)熱部署配置是否成功。
但配置到這里只是會(huì)使java文件和其他靜態(tài)資源熱部署成功,但如果您的Spring boot程序是web程序,并且有jsp或Thymeleaf等頁(yè)面模板引擎,則還需要在Spring boot的配置文件中配置。
如果是jsp, 在application.yml文件下加入配置
如果是Thymeleaf, 則在application.yml文件加入spring:thymeleaf:cache: false 配置
Spring boot程序除了通過上述步奏實(shí)現(xiàn)熱部署,還可以通過給程序添加spring-boot-devtools依賴實(shí)現(xiàn)。
<!-- 熱部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.0.4.RELEASE</version>
<!-- 啟用 -->
<optional>true</optional>
</dependency>
c.其他配置
如果你通過上面的步驟還沒實(shí)現(xiàn)想要的熱部署效果,可以繼續(xù)做以下兩個(gè)配置
1.開啟Java Compiler的自動(dòng)build
2.按住ctrl + shift +alt + / 選擇Registry,按照下圖標(biāo)注配置
文章來自:
https://blog.csdn.net/qq_16148137/article/details/99694566
三.熱啟動(dòng)在pom文件中報(bào)錯(cuò)解決
1.在本地倉(cāng)庫(kù)地址:repository\org\springframework\boot\spring-boot-devtools 刪除,重新下載,然后進(jìn)行maven update(右擊項(xiàng)目,選擇maven在下方reimport)
2.在pom文件中加入如下代碼
<repositories>
<repository>
<id>spring-releases</id>
<name>Spring Releases</name>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<name>Spring Releases</name>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>