[英]Maven configuration with Spring Boot & multi modules - run application in Intellij
[英]Intellij Run Configuration Spring Boot vs Maven Issues
我正在嘗試使用Intellij IDEA運行我的Spring Boot項目。 這個項目的類型是Spring MVC,這意味着它在路徑main/webapp/WEB-INF/jsp
有JSP文件。
我的application.properties
具有以下設置:
spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp
當我在Intellij中運行項目作為“Spring Boot Run Configuration”時,服務器無法識別JSP文件的路徑。 這是我得到的消息:
如果我使用命令spring-boot:run
帶有“Maven Run Configuration”的項目spring-boot:run
一切正常。
我不知道為什么會這樣。 每個運行配置的項目代碼和設置都相同。
您可以嘗試這個項目(而不是我的項目)來理解我的意思https://github.com/mariuszs/spring-boot-web-jsp-example 。
我的項目也是如此。 我應該注意,當項目使用Spring Boot Run Configuration運行時,我確實在控制台中看到控制器已正確映射。
2017-06-28 08:29:13.906 INFO 10308 --- [ main] o.s.w.s.h.SimpleUrlHandlerMapping : Mapped URL path [/login] onto handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]
2017-06-28 08:29:13.835 INFO 10308 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}" onto public java.lang.String com.intuit.mintbills.controllers.generic.LoginController.getLoginPage()
這是IntelliJ和Spring啟動的問題。 你應該檢查以下事項:
確保已啟用Web構面。 示例項目沒有web.xml
文件,因此,IntelliJ不會獲取src/main/webapp
。 您可以將虛擬web.xml
文件添加到src/main/webapp/WEB-INF
並重新導入項目,也可以手動添加Web facet並正確配置它。 如果正確配置了Web構面,則應在webapp文件夾中看到藍色圓圈。
虛擬web.xml
文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
這是src/main/webapp
文件夾中的“藍點”:
IntelliJ的另一個問題是提供的依賴項未正確獲取。 您通常可以通過打開“ 模塊”並選擇“ 依賴關系”選項卡來打開“ 項目結構...”來解決此問題。 在這里,您可以覆蓋依賴項的范圍,因此在您的情況下,我建議將tomcat-embed-jasper
和ecj
為Compile 。
我最近沒有這樣做,但每次更改pom.xml
都可能會覆蓋它。 在這種情況下,我建議覆蓋你的pom.xml
的<scope>
:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
如果您計划在Web容器(例如外部Tomcat)上部署應用程序,則可能需要使用配置文件,否則這可能會導致沖突,因為這些依賴項是由Web容器提供的。
還建議將打包更改為WAR,因為使用帶有JAR文件的JSP有一些已知的限制 。 引用文檔:
運行使用嵌入式servlet容器的Spring Boot應用程序(並打包為可執行存檔)時,JSP支持存在一些限制。
- 使用Tomcat它應該可以使用war包裝,即可執行的war會起作用,並且也可以部署到標准容器(不限於但包括Tomcat)。 由於Tomcat中的硬編碼文件模式,可執行jar將無法工作。
- 使用Jetty它應該可以使用war包裝,即可執行的war會起作用,並且也可以部署到任何標准容器。
- Undertow不支持JSP。
- 創建自定義error.jsp頁面不會覆蓋錯誤處理的默認視圖,而應使用自定義錯誤頁面。
我通過在運行配置中將工作目錄設置為$ MODULE_DIR $來解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.