http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-a-eclipse-project-introduce-1.gif" alt="Eclipse 項(xiàng)目結(jié)構(gòu)" />
- 如上圖 Gif 演示,在 Eclipse 下,一般中小項(xiàng)目的項(xiàng)目結(jié)構(gòu)基本都是這種模式的,所以我們這里也通過網(wǎng)上一個(gè)開源項(xiàng)目 JspRun 進(jìn)行講解。
- 下載地址:http://pan.baidu.com/s/1i3zrSf7
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-1.jpg" alt="Eclipse 項(xiàng)目配置" />
- 如上圖箭頭所示,在 IntelliJ IDEA 下是支持直接打開 Eclipse 項(xiàng)目的,無需導(dǎo)入。
- 如上圖標(biāo)注 1 所示,選擇項(xiàng)目的
.project
文件打開即可。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-2.jpg" alt="Eclipse 項(xiàng)目配置" />
- 如上圖標(biāo)注 1 所示,IntelliJ IDEA 能自動(dòng)識(shí)別到可編譯的
src
類目錄,所以這里文件夾是藍(lán)色的。- 如上圖標(biāo)注 2 所示,Java Web 項(xiàng)目
WebRoot
是整個(gè)項(xiàng)目輸出的根目錄,所以這個(gè)區(qū)域也是非常重要的,只是無需配置。- 如上圖標(biāo)注 3 所示,
WEB-INF
下的一些配置文件,以及兩個(gè)目錄classes
和lib
都是至關(guān)重要的,其中classes
是紅色目錄,也就是被排除的,因?yàn)榫幾g產(chǎn)生的文件對(duì)開發(fā)來講是沒有多大意義的,所以進(jìn)行了排除,但是這并不會(huì)影響容器去使用它。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-3.jpg" alt="Eclipse 項(xiàng)目配置" />
- 如上圖標(biāo)注 1 所示,因?yàn)檫@個(gè)項(xiàng)目是單 Module 的,所以我們這里在
Project compiler output
可以選擇項(xiàng)目WEB-INF
下的classes
編譯目錄。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-4.jpg" alt="Eclipse 項(xiàng)目配置" />
如上圖紅圈所示,我們可以根據(jù)實(shí)際情況,對(duì)項(xiàng)目的任意目錄進(jìn)行這五種目錄類型的標(biāo)注,選中要標(biāo)注的目錄然后點(diǎn)擊想要標(biāo)注的類型按鈕即可,這個(gè)知識(shí)點(diǎn)非常非常重要,必須會(huì)。
Sources
一般用于標(biāo)注類似src
這種可編譯目錄。有時(shí)候我們不單單項(xiàng)目的src
目錄要可編譯,還有其他一些特別的目錄也要作為可編譯的目錄,就需要對(duì)該目錄進(jìn)行此標(biāo)注。只有Sources
這種可編譯目錄才可以新建 Java 類和包,這一點(diǎn)需要牢記。Tests
一般用于標(biāo)注可編譯的單元測試目錄。在規(guī)范的 maven 項(xiàng)目結(jié)構(gòu)中,頂級(jí)目錄是src
,maven 的src
我們是不會(huì)設(shè)置為Sources
的,而是在其子目錄main
目錄下的java
目錄,我們會(huì)設(shè)置為Sources
。而單元測試的目錄是src - test - java
,這里的java
目錄我們就會(huì)設(shè)置為Tests
,表示該目錄是作為可編譯的單元測試目錄。一般這個(gè)和后面幾個(gè)我們都是在 maven 項(xiàng)目下進(jìn)行配置的,但是我這里還是會(huì)先說說。從這一點(diǎn)我們也可以看出 IntelliJ IDEA 對(duì) maven 項(xiàng)目的支持是比較徹底的。Resources
一般用于標(biāo)注資源文件目錄。在 maven 項(xiàng)目下,資源目錄是單獨(dú)劃分出來的,其目錄為:src - main -resources
,這里的resources
目錄我們就會(huì)設(shè)置為Resources
,表示該目錄是作為資源目錄。資源目錄下的文件是會(huì)被編譯到輸出目錄下的。Test Resources
一般用于標(biāo)注單元測試的資源文件目錄。在 maven 項(xiàng)目下,單元測試的資源目錄是單獨(dú)劃分出來的,其目錄為:src - test -resources
,這里的resources
目錄我們就會(huì)設(shè)置為Test Resources
,表示該目錄是作為單元測試的資源目錄。資源目錄下的文件是會(huì)被編譯到輸出目錄下的。Excluded
一般用于標(biāo)注排除目錄。被排除的目錄不會(huì)被 IntelliJ IDEA 創(chuàng)建索引,相當(dāng)于被 IntelliJ IDEA 廢棄,該目錄下的代碼文件是不具備代碼檢查和智能提示等常規(guī)代碼功能。- 通過上面的介紹,我們知道對(duì)于非 maven 項(xiàng)目我們只要會(huì)設(shè)置
src
即可。- 如上圖箭頭所示,被標(biāo)注的目錄會(huì)在右側(cè)有一個(gè)總的概括。值得一提的是
classes
雖然是Excluded
目錄,但是由于它的特殊性且不可編輯,所以不顯示在這里。- 如上圖標(biāo)注 1 所示,如果要去掉目錄的標(biāo)注含義,可以點(diǎn)擊打叉按鈕進(jìn)行刪除。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-5.jpg" alt="Eclipse 項(xiàng)目配置" />
- 如上圖標(biāo)注 1 所示,這是一個(gè)單 Module 的項(xiàng)目,Module 的編譯輸出目錄可以跟 Project 的項(xiàng)目輸出目錄一致,都是
WebRoot
下的classes
目錄。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-6.jpg" alt="Eclipse 項(xiàng)目配置" />
- 如上圖紅圈所示,這里顯示項(xiàng)目的所有依賴包,其中紅色表示 IntelliJ IDEA 無法識(shí)別。IntelliJ IDEA 支持一個(gè)一個(gè)導(dǎo)入依賴包,也支持直接導(dǎo)入一個(gè)目錄下的所有依賴包。上圖的這種就是一個(gè)一個(gè)具體化的依賴包。除非你的項(xiàng)目各個(gè)依賴包有存在依賴順序關(guān)系,不然不建議一個(gè)一個(gè)引入,這樣比較麻煩。所以我這里會(huì)先把這些零散的依賴包全部去除掉,然后按目錄來引入。
- 如上圖標(biāo)注 1 所示,依賴包支持這五種操作。
- 加號(hào),表示可以引入新依賴包。
- 減號(hào),表示可以去除對(duì)應(yīng)的依賴包。
- 向上箭頭,表示依賴包可以向上移動(dòng)位置。依賴包越上面的表示在項(xiàng)目加載的時(shí)候越是優(yōu)先,所以對(duì)于同一個(gè)依賴包,不同版本,依賴順序不同,結(jié)果也可能會(huì)是大不相同的。
- 向下箭頭,表示依賴包可以向下移動(dòng)位置,原因同上。
- 筆,表示可以編輯依賴包的名稱和路徑。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-7.jpg" alt="Eclipse 項(xiàng)目配置" />
- 如上圖所示,引入依賴包支持
jar
包和目錄,以及已經(jīng)導(dǎo)入項(xiàng)目的Libraries
中的依賴包。多 Module 的項(xiàng)目還可以依賴其他 Module。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-8.gif" alt="Eclipse 項(xiàng)目配置" />
- 由于我們剛剛?cè)サ袅思t圈中的所有依賴包,所以我們現(xiàn)在還需要導(dǎo)入依賴包。在導(dǎo)入之前我們先把項(xiàng)目的
lib
作為一個(gè)總的依賴包放置到項(xiàng)目Libraries
中。如上圖 Gif 演示,就是把lib
目錄轉(zhuǎn)換成一個(gè)依賴包。這樣的好處是,當(dāng)我們項(xiàng)目需要添加新依賴包時(shí),我們只要放置在lib
目錄下即可自動(dòng)被項(xiàng)目引入,原因就是我們這里引的是目錄,而不是一個(gè)一個(gè)依賴包。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-9.jpg" alt="Eclipse 項(xiàng)目配置" />
- 如上圖標(biāo)注 1 所示,引入剛剛放置好的
Libraries
下lib
依賴包。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-10.gif" alt="Eclipse 項(xiàng)目配置" />
- 對(duì)于傳統(tǒng)的 Java Web 項(xiàng)目,我們一般還需要指定配置 web.xml 位置。如上圖 Gif 演示,這個(gè)一般在
Facts
中進(jìn)行配置。Facts
可以理解為用于配置項(xiàng)目的框架區(qū),在這里管理項(xiàng)目使用的框架配置文件。這個(gè)是 IntelliJ IDEA 特有的一個(gè)配置點(diǎn)。- 除了 web.xml 一般我們要配置外,其他一些框架,即使我們不在這里配置也是不會(huì)影響項(xiàng)目的運(yùn)行的,但是是有缺點(diǎn)的,比如我們項(xiàng)目中一般都是有 Spring 框架的,而 Spring 是有很多配置文件的,如果我們在這里進(jìn)行了配置,那你會(huì)發(fā)現(xiàn) IntelliJ IDEA 編輯區(qū)底部會(huì)多出現(xiàn)幾個(gè) Spring 項(xiàng)目的設(shè)置區(qū),原因就是你告訴了 IntelliJ IDEA,你的項(xiàng)目使用了 Spring 框架,那 IntelliJ IDEA 就會(huì)出現(xiàn)其對(duì)應(yīng)的配置功能給你。Hibernate 等其他框架道理一樣。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-11.gif" alt="Eclipse 項(xiàng)目配置" />
Artifacts
也是 IntelliJ IDEA 特有的一個(gè)概念,我們可以理解這里是配置項(xiàng)目最終輸出結(jié)果的地方。比如 Java Web 項(xiàng)目我們一般必備一個(gè)配置就是要配置成一個(gè) war 包展開的方式,這樣容器才能運(yùn)行該項(xiàng)目。上圖 Gif 演示的就是配置一個(gè) war 包展開的輸出結(jié)構(gòu)。其結(jié)構(gòu)是由于前面的幾項(xiàng)配置決定,所以如果前面的 Module 配置沒有多大問題,這里可以省去一些配置步驟。但是有些時(shí)候我們也是需要做一些修改,比如此項(xiàng)目的輸出目錄默認(rèn)生成的是錯(cuò)誤,我改為了項(xiàng)目中的webRoot
目錄。- 該
Artifacts
配置,等下在配置 Tomcat 的時(shí)候也會(huì)引用到,所以這里需要重點(diǎn)注意下。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-c-eclipse-project-tomcat-settings-1.gif" alt="Tomcat 配置" />
- 如上圖 Gif 所示,為項(xiàng)目整體的一個(gè) Tomcat 配置過程,有些需要特別講解的,我們將在下面進(jìn)行分解。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-c-eclipse-project-tomcat-settings-2.jpg" alt="Tomcat 配置" />
- 如上圖彈出層所示,IntelliJ IDEA 支持目前市場上主流的應(yīng)用容器,所以基本上一個(gè) IntelliJ IDEA 足夠我們開發(fā)常見的項(xiàng)目。但是這里有一點(diǎn)需要提醒的,IntelliJ IDEA 支持這些容器但是不等同于幫我們自帶了這些容器的文件,所以上面的 Gif 演示中,原本我只有引入 Tomcat 7,但是為了這個(gè)項(xiàng)目我又引入了 Tomcat 6,而引入的 Tomcat 6 我只是指定了其存放的目錄位置 IntelliJ IDEA 自動(dòng)會(huì)識(shí)別到。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-c-eclipse-project-tomcat-settings-3.jpg" alt="Tomcat 配置" />
- 如上圖標(biāo)注 1 所示,我們可以隨時(shí)為項(xiàng)目切換不同的容器。
- 如上圖標(biāo)注 2 所示,我們可以指定給運(yùn)行的容器設(shè)置 VM 參數(shù)。
- 如上圖標(biāo)注 3 所示,這分別是在兩種命令下的觸發(fā)的事件。這個(gè)是 IntelliJ IDEA 特有的,也是重點(diǎn)。
On Update action
當(dāng)我們按Ctrl + F10
進(jìn)行容器更新的時(shí)候,可以根據(jù)我們配置的這個(gè)事件內(nèi)容進(jìn)行容器更新。其中我選擇的Update classes and resources
事件是最常用的,表示我們在按Ctrl + F10
進(jìn)行容器更新的時(shí)候,我們觸發(fā)更新編譯的類和資源文件到容器中。在 Debug 模式下,這個(gè)也就是所謂的HotSwap
。只是這種熱部署沒有 JRebel 插件那樣好用。On frame deactivation
當(dāng)我們切換 IntelliJ IDEA 到瀏覽器的時(shí)候進(jìn)行指定事件更新,這個(gè)一般是因?yàn)?Web 開發(fā)的時(shí)候,我們需要經(jīng)常在 IntelliJ IDEA 和各個(gè)瀏覽器之間來回切換測試,所以才有了這種需求。IntelliJ IDEA 是為了幫我們在做這種無聊切換的時(shí)候做一些指定事情。當(dāng)然了,如果切換過于頻繁,這個(gè)功能還是很耗資源的,所以我設(shè)置的是Do nothing
表示切換的時(shí)候什么都不做。- 如上圖標(biāo)注 4 所示,默認(rèn) Tomcat 的 HTTP 端口是 8080,如果你需要改其端口可以在這里設(shè)置。
- 如上圖標(biāo)注 5 所示,這個(gè)知識(shí)點(diǎn)在前面的文章已經(jīng)有講過了。這里表示在 Tomcat 容器運(yùn)行前做什么事情,這里分別了:Make 和 Build Artifacts 操作。如上面 Gif 演示,這里的
Build Artifacts
是我們在Deployment
選項(xiàng)卡中添加了 Artifact 之后自動(dòng)出現(xiàn)的。
- 通過上面的配置,IntelliJ IDEA 環(huán)境配置算是配置好了,現(xiàn)在配置下該項(xiàng)目相關(guān)的。
- 打開你的 Mysql,執(zhí)行下面腳本,創(chuàng)建一個(gè)新的數(shù)據(jù)庫和用戶:
CREATE DATABASE `jsprun` CHARACTER SET utf8;
CREATE USER 'jsprun'@'localhost' IDENTIFIED BY 'jsprun';
GRANT ALL PRIVILEGES ON jsprun.* TO 'jsprun'@'localhost';
FLUSH PRIVILEGES;
- 切換到上面新建的
jsprun
數(shù)據(jù)庫中執(zhí)行項(xiàng)目中這個(gè)數(shù)據(jù)腳本,文件位置:JspRun\WebRoot\install\jsprun_zh_CN.sql
。- 修改
JspRun\WebRoot\config.properties
文件中的幾個(gè)屬性為下面內(nèi)容:dbuser = jsprun
dbpw = jsprun
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-d-eclipse-project-tomcat-run-1.gif" alt="Tomcat 啟動(dòng)" />
- 如上圖 Gif 演示,我們?nèi)鄙僖?Tomcat 的依賴包。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-d-eclipse-project-tomcat-run-2.gif" alt="Tomcat 啟動(dòng)" />
- 如上圖 Gif 演示,我們引入 Tomcat 的依賴包之后,可以運(yùn)行該項(xiàng)目。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-d-eclipse-project-tomcat-run-3.jpg" alt="Tomcat 啟動(dòng)" />
- 如上圖所示,為最終項(xiàng)目運(yùn)行效果圖。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-e-eclipse-project-tomcat-stop-1.gif" alt="Tomcat 停止" />
- 如上圖所示,停止按鈕是要按兩次,第一按完出現(xiàn)一個(gè)骷髏頭并不是停止,需要再點(diǎn)擊一次。
- 有時(shí)候即使點(diǎn)了兩次,Tomcat 容器也不一定能完全停掉,這時(shí)候很容易出現(xiàn)端口被占用的操作,這時(shí)候你需要打開系統(tǒng)的資源管理器,手動(dòng) kill 系統(tǒng)上所有的 java 進(jìn)程。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-e-eclipse-project-output-war-1.gif" alt="Tomcat 輸出 war 包" />
- 如上圖 Gif 所示,除了在 Artifacts 中需要配置,還需要在容器中也跟著配置,這樣在啟動(dòng)容器的時(shí)候才會(huì)輸出一個(gè) war 壓縮包。
- 通過配置,我們也知道 war 的壓縮包本質(zhì)是根據(jù)展開的 war 輸出包進(jìn)行壓縮的得來。