2011-02-24 410 views
44

有人能解釋我IntelliJ IDEA的編譯,部署和打包綁定Maven項目的工作流程嗎?IntelliJ IDEA:Maven,項目編譯和部署

我遇到一些誤解,當我通過IDEA的debug模式啓動Tomcat服務器。例如,我有一件神器 - 戰爭檔案。 據我瞭解,當我運行調試模式 - IDEA重新編譯並將更改後的代碼更新到war-archive。

但是,打包的maven工件會發生什麼? IntelliJ是否會更新它?或者我必須在啓動之前設置'Buld maven'選項以確保已更改的代碼將被上傳到環境中?

回答

61

的Intelli j沒有使用Maven構建它使用自己的構建過程的項目。它使用pom文件作爲項目的描述。

這意味着一些事情,如果您想在tomcat中運行時構建一個工件(如戰爭文件),那麼您只需告知IntelliJ在「運行/調試配置」對話框中構建戰爭。 IntelliJ將自動構建您在運行/調試配置的部署選項卡下指定的任何工件。因此,如果你指定爆炸戰爭,它將建立爆炸戰爭,如果你指定了正規戰爭,它將會建立正規戰爭。

有時候人們需要運行自定義插件,或建立在這種情況下,您可以配置的IntelliJ運行定製Maven目標的目標。

你也可以告訴的IntelliJ運行maven的包的目標,而不是打造神器。 IntelliJ會將目標目錄下的任何內容部署到tomcat。

重要帶走的是的IntelliJ使用兩個獨立的編譯系統。你需要告訴每個構建系統要做什麼。你需要告訴IntelliJ使用哪個構建系統來做什麼。一旦項目被導入,IntelliJ默認會使用它自己的構建系統,除非你告訴它使用maven做某事。

儘管IntelliJ將構建您在pom文件中指定的工件,但它不會執行將工件部署到工件存儲庫(本地或其他方式)的內容,除非您在Maven工具窗口中單擊部署目標。

此外,如果你改變你的pom文件,不具備自動重新導入啓用這些更改將不會在您的項目,直到您單擊從maven的工具窗口中的力重新導入選項中反映出來。

+0

告訴的IntelliJ運行,因爲我的資源過濾在包裝階段完成的「一攬子」的目標將是巨大的,我...將這項工作比使用的IntelliJ的文物慢?謝謝。 – 2011-04-28 16:58:43

+0

@jon我認爲這可能會稍微慢一些,主要是因爲maven會嘗試並拉動所有的poms。如果你在離線模式下運行,它可能會是一樣的。 – 2011-04-28 17:21:38

+0

好信息,謝謝! – 2011-04-28 17:37:57

-4

我認爲你正在尋找。

Maven IDEA Plugin

想法插件是用來生成一個項目文件(IPR,IML和IWS),這樣你可以在上面使用IDE,IntelliJ IDEA的工作。

希望幫助

+2

IntellIJ現在自動加載一個pom。xml並生成所需的所有文件(ipr,iml和iws)因此,您不必再使用Maven IDEA插件。 – 2011-04-28 14:23:17