關於intellij下部署tomcat項目的問題?
新手最近改用intellij idea開發web項目,按照網上百度回來的做法把項目部署好之後可以訪問。可是當我去tomcat所在的位置去查看webapp並沒有發現我在intellij下開發的項目,以前用myeclipse開發的時候部署都是直接部署在tomcat下面的,而現在部署卻不知道去哪裡。然後在intellij啟動tomcat後還可以訪問。有個疑問intellij的部署過程到底是怎樣的呢?什麼out目錄什麼的到底是怎樣一個過程。難道當我一個項目完成後想上線還要自己手動去out目錄下把項目複製過去tomcat嗎?我明明已經部署好了,然後在瀏覽器都能訪問我的項目了,可是在tomcat下卻找不到項目,感覺很神奇啊親!很迷糊,請大神不吝賜教
首先說明啊,下面說的東東有一些呢有多種方法,我不是寫說明書(說的好像會寫一樣),嗯,你懂的,不懂也算了,這個不重要。。。
我的Tomcat裝在這個鳥地方的:F:
esourceapache-tomcat-8.0.37
- 先來說一下虛擬目錄
我們怎麼才能訪問這個aaa.jsp呢,直接把這個pikaqiu複製到tomcat安裝目錄下的webapps下就行了吧
- 現在來搞默認的目錄
上面的訪問都是http://localhost/[虛擬目錄]/aaa.jsp,現在要直接http://localhost/aaa.jsp
webapps下有一個ROOT文件夾,他是幹嘛的?他也是一個web應用啊,我們裝好tomcat之後這個東西就是那個ROOT了。現在把pikaqiu複製到webapps下,然後重命名為ROOT,當然你要把它原來的ROOT刪了,或者改成其他名字。再把tomcat跑起來- Tomcat多實例
一般是不是就跑了一個tomcat啊,可以多跑幾個吧,你在C盤下裝了一個tomcat,在D盤下也裝了一個tomcat,把這兩個都跑起來,是不是就是兩個tomcat了(當然埠不能衝突啊)
除了裝兩個tomcat,還有沒有辦法跑兩個呢,是有的,就是多實例啦。我現在的tomcat裝在F:esourceapache-tomcat-8.0.37的,上面截圖可以看到我沒有指定埠,嗯,我想說的就是這個tomcat監聽的埠是80。現在我在桌面建一個文件夾,再把F:
esourceapache-tomcat-8.0.37conf複製到這個文件夾中,然後把埠改一下(我改成了9090)
set "CATALINA_BASE=%cd%"
set "CATALINA_HOME=F:
esourceapache-tomcat-8.0.37"
set "EXECUTABLE=%CATALINA_HOME%incatalina.bat"
call "%EXECUTABLE%" start
嗯,就是下面這個樣子了
簡單解釋一下,CATALINA_HOME就是你的Tomcat安裝的位置,CATALINA_BASE就是你的這個實例的位置,默認的話這兩個值是一樣的。%cd%是什麼東東呢到現在為止,老哥,穩。
- MyEclipse中tomcat
他直接把你的應用複製到Tomcat安裝目錄下的webapps中,然後再把tomcat跑起來,沒毛病。
默認這個Web Content-root和你的項目名是一樣的,可以自己改,然後,唉,沒有然後了,這圖該有的都有了。- eclipse中tomcat
這個和MyEclipse不一樣啊,他不是複製到webapps下面的,題主說不知道它部署去了哪裡,其實這個很好搞到啊。在eclipse中新建一個web應用,然後弄一個jsp文件,內容見圖,跑起來就知道它部署到哪裡去了
啊,沒錯,它就在這個目錄裡面然後再向上一點是不是熟悉的面孔?我們把皮卡丘複製到這個webapps下面你說能訪問不,很明顯能啊對不對。這就是一個tomcat的實例嘛。現在有一個問題,我們到在wtpwebapps下瞧瞧可以看到這裡面有兩個,一個是我們的foo,還有一個ROOT,不過這個ROOT裡面基本上什麼都沒有。如果我們的foo在webapps下,那沒什麼說的對吧,問題就在於它在wtpwebapps下啊,我們是如何訪問到它的呢?去看一下這個tomcat實例的server.xml就知道了這些東西都是eclipse的插件自己給我們搞的,這個問題完啦。還有一個問題,eclipse是如何啟動這個tomcat實例的,上面我們自己手動弄tomcat實例的時候弄了一個startup.bat文件,裡面最主要就是配置了CATALINA_BASE對吧,那eclipse又是怎麼搞的呢?這個問題先留著後面一起說。- Intellij IDEA中的Tomcat
和上面一樣的辦法可以搞到它部署到哪裡去了
然後和eclipse一樣,也搞了一個tomcat的實例,在下面這個地方我這裡最後一個目錄叫Unnamed_JavaWeb,這個名字目測是這樣的(具體我不知道),下劃線後面的是項目的名字,啊,我建的這個項目就叫JavaWeb然後下劃線前面的應該是配置Tomcat時給起的名字,默認是Unnamed然而我已經改成Tomcat8了啊,唉,不理了,反正不重要。上面eclipse是怎麼搞的,在server.xml下增加Context元素對吧,IDEA不是這樣的,它是在conf[enginename][hostname]目錄下增加xml文件。看上面的截圖,我直接訪問http://localhost就可以了,這說明,他把我的這個名叫JavaWeb的應用弄成了默認的,按照上面說的,應該在conf[enginename][hostname]目錄下增加一個ROOT.xml吧。啊,它就是這麼搞的- IDE是如何啟動tomcat實例的
在說eclipse的時候留的這個問題,Intellij IDEA也是一樣的,它們是如何啟動tomcat實例的。
set "CATALINA_BASE=%cd%"
set "CATALINA_HOME=F:
esourceapache-tomcat-8.0.37"
set "EXECUTABLE=%CATALINA_HOME%incatalina.bat"
call "%EXECUTABLE%" start
這是在幹嘛啊,設置了CATALINA_HOME和CATALINA_BASE,然後用catalina.bat去吧tomcat跑起來。
可以看到這個CATALINA_BASE沒有的話,它默認的值就是CATALINA_HOME對吧。好,雙擊我們自己寫的startup.bat把我們自己的tomcat實例跑起來,使用jps工具看一看啟動參數,tomcat本身是一個Java程序,運行在Java虛擬機上的,所以你懂的。在eclipse中啟動tomcat用jps看一看在Intellij IDEA中啟動tomcat最開始也有輸出啊這個東西是catalina.bat裡面輸出的,後面紅色的是Java日誌輸出的,然而eclipse那個控制台就顯示了Java輸出的東東。再用jps看一眼吧啊,寫完了其實 idea 啟動的 tomcat 的過程很簡單,看一下啟動日誌就都明白了,題主會有這樣的疑惑主要是對 tomcat 不熟悉:
- 配置 CATALINA_BASE
- 啟動 Tomcat
CATALINA_BASE是 tomcat 配置目錄,具體可以看Tomcat官方文檔 Apache Tomcat 8 (8.5.9) - Introduction,題主的問題也可以在裡面得到解答,詳情請看下面實例。
==============================分割線================================- 下載一個全新的 tomcat 放在C:JavaTomcat-8080,不作任何修改,啟動,默認埠8080此時webapps下的項目如下
- 在 idea 配置剛剛下載的 tomcat:部署項目並更改埠為8111:
- 啟動 tomcat,觀察啟動日誌(此時 tomcat 使用埠已經變成8111):這時候咱們打開 CATALINA_BASE這個目錄看一下:沒發現webapps,再回到 tomcat 的 webapps 目錄,這時候可以看到原來的 ROOT 項目已經被配置換成實例中的 monitor 項目了
最近寫了一個tomcat的插件,支持社區版,特點就是不需要拷貝項目的web資源到其他目錄,通過修改server.xml來配置contexpath和classpath。在不改變方法簽名都可以做到熱部署,不需要重啟伺服器。修改jsp也會自動更新的。
插件名叫smart tomcat,可以嘗試一下,有問題可以反饋一下。樓上@木女孩 的回答挺詳細的,我再來補充幾個我踩過的坑1. 在java文件夾下面的資源文件,如properties xml文件之類的資源 idea打war包部署的時候默認並不會載入,在article裡面可以配置載入2. tomcat配置的時候把兩個更新都設置成update class and source 否則修改jsp文件或者freemarker之類的模板文件刷新瀏覽器不會有任何卵用3. 對於maven項目,如果super pom文件中寫了profile,直接啟動會載入第一條,gradle項目同理會載入第一條task4. 如果是maven或者gradle項目打jar包的時候別從article中配置,它會把所有的依賴也打進去,讓你的jar包非常的大。正確的姿勢是直接使用idea中相對應的插件,或者用批處理命令。5. 用手機打這麼多字,如果覺得有用請點個贊,有問題想諮詢可以私信。6. 以上
你在idwea里新建tomcat的時候,已經把tomcat的映射目錄建好了,你可以用idea啟動tomcat的時候,最開始的啟動日誌會列印你的tomcat新建目錄,可以去看看配置!就算是eclipse/myeclipse 也不是直接拷貝你的項目到webapp目錄下吧,我沒有記錯的話!很久沒用這兩個東西了。
推薦閱讀:
※你認為IntelliJ IDEA是最智能的IDE嗎?
※Intellij IDEA用Swing開發,而eclipse是用IBM優化過的SWT/JFace開發,為什麼性能差這麼多?
※Vim 是否能提高編碼效率?
TAG:Java | ApacheTomcat | IntelliJIDEA |