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部署及其他的主要内容,如果未能解决你的问题,请参考以下文章

IDEA快速部署Spring Boot 项目到Docker

Spring Boot2 IDEA 热部署

spring-boot-devtools在Idea中热部署方法

idea中使用spring boot + scala快速开发部署

通过spring-boot-devtools在IDEA中实现热部署

IDEA 热部署 + 下载jar包放到maven中