码迷,mamicode.com
首页 > 其他好文 > 详细

Stringboot项目打war包

时间:2018-10-23 16:27:24      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:over   override   文件   包括   dma   pil   ati   maven仓库   tap   

正常的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容器了。

Stringboot项目打war包

标签:over   override   文件   包括   dma   pil   ati   maven仓库   tap   

原文地址:https://www.cnblogs.com/boyliuc/p/9837163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!