2015-05-11 93 views
29

當在maven模塊中工作時,在intellij build中做什麼 - > Make Project和Maven Projects - > Root pom - > Compile階段有什麼區別。intellij Project make和Maven Compile之間的區別?

intellij是否調用maven? 他們倆是否將源代碼編譯到同一個地方? 他們是否都複製資源文件? 爲什麼我們需要這兩種選擇? intellij是否自動下載依賴項,我們可以直接調用project make,而不使用maven編譯?

intellij project: two ways of compiling

回答

18

它們在執行的任務方面非常相似,即默認情況下使用javax.tools.JavaCompiler編譯項目的源代碼和測試路徑。

intellij是否調用maven?

不,它不會默認。請記住,這只是IntelliJ的內置Java編譯器,一些Java項目不使用Maven。

他們倆是否將源碼編譯到同一個地方?

是的,他們使用相同的源文件來編譯,如果這就是你要求的。

他們是否都複製資源文件?

是的,他們都將資源文件複製到不同的位置。

爲什麼我們需要這兩個選項?

我們不需要這兩個選項。 Maven編譯命令檢查源代碼是否對任何有效覆蓋IntelliJ make選項所做工作的語法錯誤進行檢查。

intellij是否自動下載依賴關係,我們可以直接調用project make,而無需使用maven編譯?

Intellij的編譯器可以被認爲是語法編譯器,這就是爲什麼你需要maven來處理你的項目的依賴關係。

+6

當問到「他們倆是否將來源彙集到同一個地方?」 我的意思是輸出位置在哪裏? 您如何知道intellij將資源複製到不同的位置? 你能否詳述一下。 – omer727

2

不,的IntelliJ不叫行家,但如得到pom.xml中的所有信息輸出目錄庫等

所以不用擔心,你可以從IntelliJ調用make來編譯和運行你的應用程序。 如果你在你的Maven構建文件中有一些特殊的目標,你可以從Maven窗口運行它。

所有的maven依賴項都將從IntelliJ下載到maven本地倉庫中。

+1

IntelliJ開始一個過程,在該過程中,它使用嵌入式Maven庫下載並解析依賴關係,並解析pom和內容。所以在技術上它叫Maven,但不是用於編譯,也不是通過命令行,而是直接使用jar。 – Meo

+0

當然,但它不會將Maven作爲外部程序調用,那是不是問題?例如在Gradle項目中,Intellij調用gradle .... – chokdee

+0

是的,但也有最後一個問題'''intellij是否自動下載依賴關係,我們可以直接調用project make,而不使用maven編譯?'''你沒有回答:) – Meo

2

讓我們覺得我們有項目A這是使用Maven的項目B

如果您已更改B項目,您必須更新此項目A。那麼你必須在A中編譯B.

但是,如果你只改變了A你不必編譯Maven。