2013-05-01 69 views
1

我有一個項目,其中包含一個Groovy通用代碼模塊和一個單獨的Grails Web應用程序模塊。我從Eclipse到IntelliJ 12.1.2做了一些改進,這是一個巨大的進步。似乎一切都變得更好了 - 例如,當我在Groovy項目中向類中添加字段時,我立即在Grails項目的IntelliSense中看到它們可用。另外,另一個很大的好處是,我終於能夠調試在IDE中工作的Grails應用程序(Hooray,因爲無需在任何地方使用print語句來清理代碼!)。使用IntelliJ 12.1.2和Maven項目時Grails應用程序不同步

但是,我遇到的問題是,當我執行Run-> Run'Grails:FooProj'或Run-> Debug'Grails:FooProj'時運行的代碼似乎已經失效與保存的代碼同步。例如,我可以向代碼添加一條日誌語句,然後嘗試運行它,但它不顯示。這就像它使用了jar/wars的緩存版本。

有一點值得注意的是,對於我的運行/調試配置,我不得不檢查Maven Settings的「Work offline」框,以便它不會出現在連接點以拉下罐子。我希望它使用我對代碼做出的本地更改,而不是發佈的內容。

如何讓IntelliJ使用我在調試web-app時所做的本地代碼更改?我可以去控制檯並在通用代碼項目上執行mvn clean install,然後在IntelliJ中正常工作,但是我不想在每次我想調試我的應用程序時都下載到控制檯。

回答

1

我有一個問題和出路給你。

問題: -

你有以下的情況下,在BuildConfig設定您所使用Grails版本> 2.X?如果不是,你可以嘗試添加,然後運行你的應用程序。

grails.project.dependency.resolution = { 
    pom true 
} 

出路: -

在InteliJ,如果你去Run/Debug Configuration -> Maven Settings -> Before Launch(in bottom) ,併成立了Before Launch配置的Run Maven Goal然後每次運行你的應用程序時,它會暗中做mvn install你而不是在命令提示符下執行。

+0

我們正在使用Grails 2.1。我將pom添加到了'BuildConfig'中,但它似乎沒有提到我的更改。還有什麼我需要做的嗎? 「出路」方法看起來有些有前途,但我寧願不必每次都進行mvn安裝,因爲依賴代碼並不總是變化。另外,我們還有一些我們需要跳過的集成測試,所以通常我們會執行'mvn clean install -D skipITs',但我不明白我在「出路」中如何傳遞該參數。 – FuriousGeorge 2013-05-01 21:30:19

1

UPDATE

另一種可能是:

  • 取出置於Grails的pom.xml
  • Maven的依賴確保共同項目的罐子中的Grails項目-DIR結束了/ LIB
  • 添加的項目目錄/ lib目錄/文件common.jar一個IDE類路徑依賴

通用代碼是maven依賴項,它從本地Maven緩存中提取。您也可以從IDE運行maven clean install ...

如果您不希望創建一個簡單的非Maven項目並將通用項目添加爲依賴項,那麼您的更改將被即時拾取。

希望已經足夠清楚了

+0

如果通用代碼是一個maven依賴項,我不希望該web應用程序也是一個maven項目嗎?我有共同的代碼作爲依賴,但它似乎沒有什麼區別。 – FuriousGeorge 2013-05-02 13:14:57

+0

我的答案與是否希望自動獲取更改有關(如果必須從IDE運行Maven安裝或命令行對您有問題)。 如果您想自動刷新,請將您的Maven項目轉換爲用於開發目的的簡單Java項目(項目依賴於公共代碼)。 如果您使用的是Maven,這意味着您希望從您的本地Maven緩存中獲取依賴關係... – rimero 2013-05-02 19:05:17

+0

我不介意從本地Maven緩存中獲取依賴關係(實際上我更喜歡)。我猜這是我不瞭解IntelliJ如何將罐子安裝到本地MVN倉庫。有什麼具體的,我需要做的發佈到本地回購?我猜測做一個Build-> Make'Foo'不會發布到本地mvn倉庫。我怎麼做? Grails項目中有沒有一種方法可以確定通用代碼是否過時,需要編譯並推送到本地回購? – FuriousGeorge 2013-05-03 15:31:47

相關問題