2011-09-21 86 views
11

我正在開發一個基於玉蘭的網站。我正在使用webapp原型創建一個新的Web應用程序。使用命令行我能夠生成一個WAR並將其部署到我的容器(Tomcat)中。然後我運行它,它工作正常。在使用IntelliJ的webapp運行配置中使用Maven覆蓋?

我的下一步是將我的項目結構導入IntelliJ。 IntelliJ認爲一切正常,並且能夠編譯所有內容。我已經通過先做一個maven來測試這個,然後讓IntelliJ完成剩下的工作(重建項目)。

最後一步是讓它在我的容器中運行。我已經爲web應用程序設置了運行配置(它們不使用戰爭覆蓋),並且它們工作得很好。在這種情況下,我像之前一樣設置它並指向我的爆炸Web應用程序工件。

一旦我運行tomcat,它不會找到我的webapp。我發現疊加層沒有被合併到項目的目標目錄中(通常只是在執行Maven安裝時)。然而,IntellJ已經在我的項目中創建了一個覆蓋目錄,並將(overlay/super)WAR文件解壓到那裏。

當我自己做一個maven安裝,然後在IntelliJ中運行Tomcat時,我知道它的工作原理。這是顯而易見的,因爲所有需要的文件現在都在我的目標目錄中(比如web.xml)。

我想要的是: - IntelliJ知道當它運行Tomcat時,它應該已經準備好了像「mvn install」或「mvn package」那樣的目標目錄。

它做什麼: - 它在兩者之間做了一些事情。它確實創建了目標目錄,並且它從webapp項目中複製了資源。它不覆蓋任何WAR依賴,因此webapp目標目錄不完整。

任何人有任何提示來解決這個問題?

回答

10

我發現在運行配置中檢查「運行maven目標」複選框,並設置mvn軟件包確實能夠工作。

+0

這是否允許我'更新班'以及?或者我需要重新部署才能看到每一個變化? – Abhimanyu

+1

當你做更新類,他們將被加載到內存中,它將工作。但請注意,當您使用多個依賴項時,下次啓動容器時,需要確保容器(即tomcat)也在查看最新的依賴項來源。我發現這很麻煩,我不得不mvn乾淨安裝這些依賴關係,以確保他們在我的本地回購。那樣,mvn包的目標就會正確地選擇它們。 –

+0

@StefanHendriks:謝謝你的提示。我有一個類似的問題,我的疊加定義被IntelliJ忽略。看起來IntelliJ在使用自己的內部構建機制構建webapp時忽略了maven-war-plugin的一些配置。告訴它將war構建委託給maven本身意味着整個war-plugin配置是可信的。 – skaffman

相關問題