zoukankan      html  css  js  c++  java
  • Stringboot项目打war包

    正常的boot项目打包打的是jar包,boot项目内置tomcat,一般我打包是:mvn clean install -Dmaven.test.skip 命令

    clean 移除所有上一次构建生成的文件

    install 将包安装至本地仓库,以让其它项目依赖

    maven.test.skip 跳过测试

    运行的命令:java -jar xxx.jar

           由于一些外部的原因我们需要将项目打包成war包,这时候我们可以创建一个新的boot项目选择war包的方式进行参考,这种方式的是spring官方推荐的打包方式,其实打war包也就进行了一下几步操作:

    1、在pom.xml文件首部增加<packaging>war</packaging>,/
    <groupId>com.uloan.ssm</groupId>
    <artifactId>Uloan</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <!--<packaging>jar</packaging>-->
    2、<!--增加下面的依赖覆盖默认内嵌的Tomcat依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    scope的分类
    1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去
    2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit
    3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
    4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
    5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

    所以我们这里采用provided,这也是spring官方推荐的方式。

    剩下的就是将我们的启动类进行修改,我们之前启动类是boot的启动方式,我们这边要修改成tomcat的方式,当然之前的boot启动方式在我们本地依旧保留使用。

    public class ServletInitializer extends SpringBootServletInitializer {

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(UloanApplication.class);
        }
    }

    该类继承了SpringBootServletInitializer并且重写了configure方法。

    jar包和war包启动区别
        jar包:执行SpringBootApplication的run方法,启动IOC容器,然后创建嵌入式Servlet容器
        war包:  先是启动Servlet服务器,服务器启动Springboot应用(springBootServletInitizer),然后启动IOC容器
    SpringBootServletInitializer实例执行onStartup方法的时候会通过createRootApplicationContext方法来执行run方法,接下来的过程就同以jar包形式启动的应用的run过程一样了,在内部会创建IOC容器并返回,只是以war包形式的应用在创建IOC容器过程中,不再创建Servlet容器了。

  • 相关阅读:
    CentOS忘记密码修改方案以及centos卡在开机登录界面,命令失效的解决方法
    音乐制作模块
    CentOS7安装RabbitMQ,并设置远程访问
    设计模式
    排序
    经典排序算法及python实现
    scrapy初步解析源码即深度使用
    JAVA----线程初级
    Python随笔--魔法方法(析构与构造)
    Python随笔--对象
  • 原文地址:https://www.cnblogs.com/boyliuc/p/9837163.html
Copyright © 2011-2022 走看看