SpringBoot框架(45):打Jar包和War包

一:打JAR包

在工程的pom.xml中添加以下依赖

<build>
  <plugins>
     <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
     </plugin>
   </plugins>
</build>

我们目前的工程采用的是jar 的打包方式,所以我们在执行package 命令后,会产生一个jar 包。

我们进入到这个目录用压缩软件打开此jar 包,其中我们发现了一个叫lib 的文件夹,打开lib 文件夹发现此文件夹下全是工程依赖的jar 包,甚至还有tomcat。这种包含有jar 包的jar包,我们称之为fatJAR( 胖jar 包)

由于fatJAR 本身就包括tomcat , 我们就不需要另外部署了,直接在命令行就可以把我们的应用启动起来,在命令行,进入到jar 包所在的目录,我们可以通过以下java –jar命令来执行此jar 包。在控制台会出现启动信息,在浏览器访问程序

二:打WAR包

spring-boot 默认提供内嵌的tomcat,所以打包直接生成jar 包,用java -jar 命令就可以启动。但是,有时候我们更希望一个tomcat 来管理多个项目,这种情况下就需要项目是war 格式的包而不是jar 格式的包。
我们按照以下步骤完成对工程的改造

(1)修改pom.xml

将打包方式修改为war

<packaging>war</packaging>

添加依赖

<!-- tomcat依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <!--设置访问项目名称 -->
        <!--<finalName>demo1</finalName>-->
    </build>

添加<scope>provided</scope>,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了。
spring-boot-starter-tomcat 是原来被传递过来的依赖,默认会打到包里,所以我们再次引入此依赖,并指定依赖范围为provided,这样tomcat 相关的jar就不会打包到war 里了.

(2)添加ServletInitializer

iimport org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoApplication .class);
    }

}

由于我们采用web3.0 规范,是没有web.xml 的,而SpringApplicationBuilder 此类的作用与web.xml相同。

(3)运行package 打包命令生成war 包

mvn clean package
生成后将war 包放入tomcat的webapps内,启动tomcat。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容