2017-03-16 78 views
1

創建Spring Boot應用程序時,在開發環境中,IntelliJ Idea會創建一個沒有Maven的Run Configuration,它會直接調用類型爲「Spring Boot」的靜態Main方法。Spring Boot是否運行Maven?沒有

當我沒有Maven的情況下運行我的JSP模板文件沒有被解析,我得到下面的錯誤頁面。

當我使用Maven運行時,它們已解決但我無法調試。我看到一些POM.xml配置能夠連接調試器,但隨後即使在使用「運行」而不是「調試」來啓動應用程序時,它也始終進行調試。

我應該在沒有Maven的情況下運行Boot應用嗎?
如果我不應該,調試應該是這樣嗎?
我覺得什麼是錯在這裏...

Whitelabel Error Page 

This application has no explicit mapping for /error, so you are seeing this as a fallback. 

Thu Mar 16 08:53:54 GMT 2017 
There was an unexpected error (type=Not Found, status=404). 
No message available 

我相信我看到這個錯誤頁面,因爲它試圖找到我的index.jsp,無法找到它,然後嘗試爲error.jsp文件並能」同樣也可以找到。

+0

你不應該使用Maven運行。 Maven只是構建工具,你不應該依賴它來執行。 –

+0

@Adrian Shum,爲什麼不呢?當IDEA classpath與maven classpath不同時,我曾經見過很多次。在這種情況下,Maven運行的結果更準確。當然,你可以用單獨的命令運行一個由Maven生成的二進制文件,但是maven運行它有什麼問題,並且認爲它是構建過程的最後一步? –

+0

實際上它取決於您的「運行應用程序」的定義。一般來說,當你完成所有的開發等,並且你部署你的應用程序運行時,你不應該依賴Maven這樣做。對於調試,只要您可以將IDE連接到遠程進程,就可以進行調試。它不應該是重要的選擇是否與Maven運行它...也許我還不清楚你的問題。 –

回答

0

好了在做了更多的研究之後,似乎在開發環境中通過Main方法直接運行Spring Boot應用程序而不是Maven是正確的。

如果沒有Maven,JSP的問題不會被渲染,而是在Tomcat Jasper依賴的範圍是<scope>provided</scope>,將其更改爲「編譯」或「運行時」之後,它開始在沒有maven的情況下運行。有趣的是,當它「提供」時,JSP呈現只能與Maven一起工作。

0

您可以嘗試不同的網址,例如沒有或帶有項目(工件)名稱的網址。 IDEA和maven部署你的戰爭的方式可能有問題。 另外,可以從maven運行應用程序,然後使用IDEA的遠程運行配置連接到它。爲此,您需要使用mvnDebug而不是mvn - 它位於與mvn($ MAVEN_HOME/bin /)相同的文件夾中。然後,您需要將遠程配置添加到端口8000的IDEA - 它是默認端口。

0

嘗試重新導入Maven項目首先從的IntelliJ運行的應用程序,或者使當您在pom.xml文件(File | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing | Import Maven projects automatically)改變的東西,它會自動發生之前。

我在我的開發環境中使用IntelliJ執行。更重要的是,如果您想要熱重載等功能,請考慮使用Spring Boot附帶的devtools模塊,該模塊可輕鬆集成IntelliJ調試執行(只需將spring-boot-devtools添加到您的依賴關係中)。

相關問題