2016-01-22 533 views
1

我使用maven命令清理,構建整個項目,創建戰爭並部署到服務器。由於我只有社區版,因此我無法使用Intellij來做到這一點。它在與intellij相同的目錄下構建項目。Intellij Idea編譯器重新編譯已編譯的項目

爲了加快速度,我編寫了一個腳本,用於在本地「目標」目錄中查找比服務器中的編譯文件更新並編譯它們的腳本。它一切正常,但問題是Intellij沒有看到用maven編譯的類作爲它應該跳過的類,並且重新構建整個項目。

目前,它的工作原理是這樣的:

  1. 手動在終端打造整個項目使用Maven
  2. 回去的IntelliJ - >使項目
  3. 重建所有
  4. 運行腳本 - >它交換所有文件

我想實現的是:

  1. 手動終端使用maven構建整個項目
  2. 回到intellij。更改一個文件 - >使項目
  3. 編譯只有一個Java文件
  4. 運行腳本 - >它交換隻有一個.class文件

所以,問題是我怎麼做的IntelliJ請客文件已經與外部編譯工具編譯?

回答

1

你不知道。 IntelliJ IDEA擁有自己的增量編譯系統,可以跟蹤編譯的文件之間的依賴關係,並重新編譯每組更改的最小類別集合。使用Maven或Gradle等工具進行外部編譯不會更新IntelliJ IDEA的增量編譯數據庫。因此,IntelliJ IDEA無法識別類已經被外部工具編譯的事實,並且會重新編譯。

+0

如果IDEA自己的漸進式編譯系統已經生成了所有的類文件,爲什麼不能使用已經生成的類文件啓動應用程序。爲什麼「運行」或「調試」功能必須經歷再次構建它的整個繪圖?我有一個需要30秒才能最終啓動的應用程序,這是非常煩人的。我使用dcevm,它可以幫助我更改正在運行的程序,但對於需要重新啓動的程序,啓動它們需要很長時間。 是否有可能找到.class目錄並將其添加到build classpath中? – Mike

+0

再一次:運行或調試功能需要確保您的類是最新的,並且它不能識別類已經用外部工具編譯的事實。 – yole

+0

我不使用外部工具進行編譯,並且像鼠疫一樣使像gradle和maven這樣的東西無效。 – Mike