相比較于 Eclipse 的實(shí)時(shí)自動(dòng)編譯,IntelliJ IDEA 的編譯更加手動(dòng)化,雖然 IntelliJ IDEA 也支持通過(guò)設(shè)置開(kāi)啟實(shí)時(shí)編譯,但是不建議,因?yàn)樘假Y源了。IntelliJ IDEA 編譯方式除了手工點(diǎn)擊編譯按鈕進(jìn)行編譯之外,還有就是在容器運(yùn)行之前配置上一個(gè)編譯事件,先編譯后運(yùn)行。默認(rèn)下 IntelliJ IDEA 也都是這樣的設(shè)置,所以實(shí)際開(kāi)發(fā)中你也不用太注意編譯這件事。雖然 IntelliJ IDEA 沒(méi)有實(shí)時(shí)編譯,但是對(duì)于代碼檢查完全是沒(méi)有影響。但是多個(gè)類之間的關(guān)聯(lián)關(guān)系還是要等 Make 或 Rebuild 觸發(fā)的時(shí)候才會(huì)做相關(guān)檢查的。
在 IntelliJ IDEA 里,編譯方式一共有三種:
- Compile:對(duì)選定的目標(biāo)(Java 類文件),進(jìn)行強(qiáng)制性編譯,不管目標(biāo)是否是被修改過(guò)。注:2018版操作為Recompile。
- Rebuild:對(duì)選定的目標(biāo)(Project),進(jìn)行強(qiáng)制性編譯,不管目標(biāo)是否是被修改過(guò),由于 Rebuild 的目標(biāo)只有 Project,所以 Rebuild 每次花的時(shí)間會(huì)比較長(zhǎng)。
- Make:使用最多的編譯操作。對(duì)選定的目標(biāo)(Project 或 Module)進(jìn)行編譯,但只編譯有修改過(guò)的文件,沒(méi)有修改過(guò)的文件不會(huì)編譯,這樣平時(shí)開(kāi)發(fā)大型項(xiàng)目才不會(huì)浪費(fèi)時(shí)間在編譯過(guò)程中。注:2018版操作為Build。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xiii-a-make-introduce-1.jpg" alt="IntelliJ IDEA 編譯觸發(fā)按鈕" />
- 如上圖標(biāo)注 1 所示,Make 的操作有:
Make Project
、Make Module
- 如上圖標(biāo)注 2 所示,Compile 的操作有:
Compile
指定類- 如上圖標(biāo)注 3 所示,Rebuild 的操作有:
Rebuild Project
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xiii-b-befour-launch-1.jpg" alt="IntelliJ IDEA 運(yùn)行之前的編譯" />
- 如上圖所示,IntelliJ IDEA 默認(rèn)在運(yùn)行 JUnit 之前會(huì)先進(jìn)行
Make
操作。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xiii-b-befour-launch-2.jpg" alt="IntelliJ IDEA 運(yùn)行之前的編譯" />
- 如上圖所示,IntelliJ IDEA 默認(rèn)在運(yùn)行 tomcat 之前會(huì)先進(jìn)行
Make
操作。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xiii-c-compiler-setting-1.jpg" alt="編譯器的設(shè)置和選擇" />
- 上圖標(biāo)注 1 所示,也是我們本文前面講的,IntelliJ IDEA 是支持自動(dòng)編譯的,默認(rèn)是不開(kāi)啟的,也建議不用開(kāi)啟,原因前面已經(jīng)說(shuō)了。
- 上圖標(biāo)注 2 所示,設(shè)置編譯
heap
大小,默認(rèn)是700
,建議使用 64 位的用戶,在內(nèi)存足夠的情況下,建議改為1500
或以上。如果你在編譯的時(shí)候出錯(cuò),報(bào):OutOfMemoryError
,一般也是要來(lái)改這個(gè)地方。- 上圖標(biāo)注 3 所示,還可以設(shè)置編譯時(shí)的
VM
參數(shù),這個(gè)你可以根據(jù)需求進(jìn)行設(shè)置,一般人是用不上的。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xiii-c-compiler-setting-2.jpg" alt="編譯器的設(shè)置和選擇" />
- 如上圖標(biāo)注 1 所示,可以添加目錄 或 文件進(jìn)行編譯排除。
- 在項(xiàng)目中,如果有任何一個(gè)可編譯的文件無(wú)法編譯通過(guò),則 IntelliJ IDEA 是無(wú)法運(yùn)行起來(lái)的,必須等你全部問(wèn)題解決,編譯通過(guò)之后才可運(yùn)行。但是可能開(kāi)發(fā)過(guò)程中,某一個(gè)包目錄的文件編譯無(wú)法通過(guò),但是我們又不急著改,那我們就可以考慮把該包加入到排除編譯列表中,則項(xiàng)目就可以運(yùn)行起來(lái)。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xiii-c-compiler-setting-3.gif" alt="編譯器的設(shè)置和選擇" />
- 如上圖動(dòng)態(tài) Gif 所示,IntelliJ IDEA 支持常見(jiàn)的幾種編譯器:
Javac
、Eclipse
、Ajc
等。默認(rèn)是Javac
,也推薦使用Javac
。Project bytecode version
針對(duì)項(xiàng)目字節(jié)碼編譯版本,一般選擇的是當(dāng)前項(xiàng)目主 JDK 的版本。Per-module bytecode version
可以針對(duì)Project
下各個(gè)Module
的特殊需求單獨(dú)設(shè)置不同的bytecode version
,前提是電腦上必須有安裝對(duì)應(yīng)的 JDK 版本。