2017-03-16 61 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添加到您的依赖关系中)。

相关问题