Idea 部署非Maven項目

參考:http://m.blog.csdn.net/z69183787/article/details/78030857web

 

之前一直很好奇,在idea中運行tomcat,把項目部署到其中,運行起來,而後我去tomcat目錄下去看,根本找不到我部署的項目 那個人項目是咋運行的啊… - -spring

後來我就查啊查 ,糾結啊糾結,而後大概知道是咋回事了:tomcat

在idea中配置的tomcat,在運行時idea不會把項目放到該路徑下,而是複製一份足夠的配置文件,到 ${user.home}/.IntelliJIdea/system/tomcat 目錄下:app

這裏寫圖片描述

也就是說每一個項目都有屬於本身的一份tomcat配置,互不干擾。webapp

每一個項目的配置文件夾中有一個 /conf/Catalina/localhost/ROOT.xml 文件,內容以下:jsp

<?xml version="1.0" encoding="UTF-8"?> <Context path="" docBase="D:\work\項目\target\xxx-web" />
  • 1
  • 2

其中,path是指在訪問此項目時,是否須要添加額外的路徑,若是爲空,則直接使用域名或者ip就能夠訪問到該項目:127.0.0.1。這個值在ieda中的Run/Debug Configurations中能夠配置:maven

這裏寫圖片描述

docBase是指要運行的項目的部署位置,D:\work\項目 就是個人項目源代碼的位置,target是由maven構建後生成的,D:\work\項目\target\xxx-web 目錄就是maven build完成以後生成的項目,結構以下:ide

這裏寫圖片描述

而idea啓動tomcat的命令爲:gradle

這裏寫圖片描述

也就是說,整個項目運行過程爲:首先maven build項目,將構建結果寫到項目的target目錄下,而後idea複製一份tomcat的配置文件到${user.home}/.IntelliJIdea/system/tomcat 中,以後啓動tomcat安裝目錄下的catalina.bat文件,tomcat讀取配置文件,找到項目位置,而後就運行起來了。ui

 

 

 

 

在idea中運行tomcat,把項目部署運行起來,而後我去tomcat目錄下去看,找不到我部署的項目 那個人項目是怎麼運行起來的?

說明一下:這裏是使用tomcat 部署成war exploded 而不是war包。

war exploded模式是直接把文件夾、jsp頁面 、classes等等移到Tomcat 部署文件夾裏面,進行加載部署。所以這種方式支持熱部署,通常在開發的時候也是用這種方式。

在平時開發的時候,使用熱部署的話,應該對Tomcat進行相應的設置,這樣的話修改的jsp界面什麼的東西才能夠及時的顯示出來。

如上,將兩處都修改爲Update resources便可。

webapps下面文件夾都翻了一遍,都沒有發現部署的項目。

去work文件夾下也看了一遍,是空的。

後來發現,在idea中配置的tomcat,在運行時idea不會把項目放到本身的webapps路徑下,而是複製三份文件到 ${user.home}/.IntelliJIdea/system/tomcat 目錄下的各自項目。

咱們進入該目錄,看到以下(名稱是經過咱們的項目名轉化而來):

也就是說每一個項目都有屬於本身的一份tomcat配置,互不干擾。

咱們進入其中一個項目下,看到以下:(在本身的tomcat安裝目錄下是看不到日誌的,日誌在這裏,還有一些配置文件)

每一個項目的配置文件夾中有一個 /conf/Catalina/localhost/ROOT.xml 文件,內容以下:

其中,path是指在訪問此項目時,是否須要添加額外的路徑,若是爲空,則直接使用域名或者ip就能夠訪問到該項目:127.0.0.1。這個值在ieda中的Run/Debug Configurations中能夠配置:(即Application context)

 

若是如今我在Application context加上:/springSecurityDemo

Server這邊會自動加入:springSecurityDemo/

這時候,咱們運行tomcat以後,在conf/Catalina/localhost沒有發現ROOT.xml,而是springSecurityDemo.xml文件,內容以下:

 

這時候項目的訪問路徑是:http://localhost:8145/springSecurityDemo/

docBase是指要運行的項目的部署位置,/myProject/springSecurityDemo 就是個人項目源代碼的位置,build是由gradle構建後生成的,gradle build完成以後生成的項目,結構

以下:

而idea啓動tomcat的命令在這裏:

整個項目運行過程是:首先gradle build項目,將構建結果寫到項目的build目錄下,而後idea複製一份tomcat的conf、logs和work文件夾到${user.home}/.IntelliJIdea/system/tomcat 中,以後啓動tomcat安裝目錄下的catalina.sh文件,tomcat讀取配置文件,找到項目位置,而後就運行起來了。

-------------------------------------------------------------------------------------

若是是使用tomcat 部署成是war包。那麼會不會就能在本身安裝的tomcat中找到呢?

剛開始我將項目改成war部署的方式,可是運行以後tomcat中始終沒有項目的文件。後來發現若是將當前的Application context設置爲’/’,那麼

tomcat也不會將項目部署到webapps中,由於這個至關於你項目的根路徑。後來通過實踐,發現這個Application context就是你項目在webapps路徑下項目的根目錄名。 

相關文章
相關標籤/搜索