IDEA+Spring Boot+MAVEN部署及其他
Posted 低调的测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA+Spring Boot+MAVEN部署及其他相关的知识,希望对你有一定的参考价值。
上面已经新建完毕web项目,接下来介绍spring boot部署知识
Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。
1、jar包
打成jar包
<packaging>jar</packaging>
cd 项目跟目录(和pom.xml同级) mvn clean package
启动jar包命令
java -jar target/myproject-0.0.1-SNAPSHOT.jar
这种方式,只要控制台关闭,服务就不能访问了。下面我们使用在后台运行的方式来启动:
nohub java -jar target/myproject-0.0.1-SNAPSHOT.jar &
2、 war
打包成war包,将war放到tomcat下启动
将pom文件中 将jar包修改成war包,如:
<packaging>war</packaging>
MarketApplication.java继承SpringBootServletInitializer,代码如:
public class MarketApplication extends SpringBootServletInitializer{
打包命令:
cd 项目跟目录(和pom.xml同级) mvn clean package
会在target目录下生成:项目名+版本号.war文件,拷贝到tomcat服务器中启动即可。
3、springboot打war包遇到的那些坑
1、主程序类上继承SpringBootServletInitializer,并实现configure方法。
2、pom文件中加
<!-- 移除tomcat的支持,改成编译时支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
根据以上步骤可以成功部署到tomcat容器中,但是在idea中启动时报错,如:
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 21 common frames omitted
解决方法:注释一下两个内容,打成的包在tomcat下完美运行,项目在idea下使用springboot方式也完美运行。
// @Override
// protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
// return application.sources(MarketingApplication.class);
// }
<!-- 移除tomcat的支持,改成编译时支持 -->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--<scope>compile</scope>-->
<!--</dependency>-->
4、开发环境的调试
热启动在正常开发项目中已经很常见了吧,虽然平时开发web项目过程中,改动项目启重启总是报错;但springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
以上是关于IDEA+Spring Boot+MAVEN部署及其他的主要内容,如果未能解决你的问题,请参考以下文章
spring-boot-devtools在Idea中热部署方法
idea中使用spring boot + scala快速开发部署