springboot中将项目打成jar和war以及部署详细流程

写在前面:

在我们的实战开发的最后阶段,我们需要将自己写的项目打包放到服务器上。首先来了解一下打包的两种方式:

jar包:直接通过内置tomcat运行,不需要额外安装tomcat。如需修改内置tomcat的配置,只需要在spring boot的配置文件中配置。内置tomcat没有自己的日志输出,全靠jar包应用输出日志。但是比较方便,快速,比较简单。

war包:传统的应用交付方式,需要安装tomcat,然后放到waeapps目录下运行war包,可以灵活选择tomcat版本,可以直接修改tomcat的配置,有自己的tomcat日志输出,可以灵活配置安全策略。相对打成jar包来说没那么快速方便。

一.jar的打包和部署

1.我们在对写好的项目进行打包之前,只需要对pom.xml文件进行相关的修改,因为pom文件中有很多我们项目引入的依赖,这些依赖我们都不能进行改动,下面是我的pom文件,方便以后作为参照,为了保证准确性和完整性,关于我项目的一些依赖我没有进行删除,五个核心点在pom.xml中一一进行了标注:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baizhi</groupId>
<artifactId>SpringBoot_day1</artifactId>
<version>1.0-SNAPSHOT</version>
    //核心点一:   jar
<packaging>jar</packaging>               
<name>SpringBoot_day1 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!--继承springboot的父项目   仲裁中心:管理jar的版本号-->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.7.RELEASE</version>
</parent>

<dependencies>
  <!--引入springboot的web支持-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <!--引入jsp的集成jar包-->
  <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
  </dependency>
  <dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
  </dependency>

  <!--整合mybatis  注意不要使用1.0.0版本,因为不支持springboot的热部署也不支持springboot部署成jar包-->
  <dependency>   <!--mybaties和springboot集成的启动器-->
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
  </dependency>
  <dependency>    <!--数据库连接-->
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
  </dependency>
  <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
  </dependency>

  <!--引入测试依赖-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>

  <!--springboot热部署-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
  </dependency>

  <!--lombok相关插件-->
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
  </dependency>
</dependencies>

<build>
  <finalName>SpringBoot_day1</finalName>
  <!--引入jsp运行插件-->
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
        //核心点二:  版本最好是1.4.2.RELEASE,其他版本可能出现问题
      <version>1.4.2.RELEASE</version>
      <configuration>
          //核心点三:com.baizhi.Application入口类的全限定名
        <mainClass>com.baizhi.Application</mainClass>
          //核心点四: JAR
        <layout>JAR</layout>
      </configuration>
    </plugin>
  </plugins>
    //核心点五:  将静态资源也拷贝到相关目录下
  <resources>
    <!-- 打包时将jsp文件拷贝到META-INF目录下-->
    <resource>
      <!-- 指定resources插件处理哪个目录下的资源文件 -->
      <directory>src/main/webapp</directory>
      <!--注意此次必须要放在此目录下才能被访问到-->
      <targetPath>META-INF/resources</targetPath>
      <includes>
        <include>**/**</include>
      </includes>
    </resource>
    <resource>
      <directory>src/main/resources</directory>
      <includes>
        <include>**/**</include>
      </includes>
      <filtering>false</filtering>
    </resource>
    <resource>
      <directory>src/main/java</directory>
      <excludes>
        <exclude>**/*.java</exclude>
      </excludes>
    </resource>
  </resources>
</build>
</project>

注意别入坑:pom文件中需要去除servlet-api这个依赖!!!

2.点击进行打包
在这里插入图片描述
3.打包成功和jar包的位置
在这里插入图片描述
4.找到jar的位置
在这里插入图片描述
5.dos窗口输入:java -jar SpringBoot_day1.jar

6.地址栏进行项目访问即可~

二.war的打包和部署

1.当使用外部的tomcat时 需要把内部的tomcat排除

 需要去掉下面的依赖: 	
		<dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

2.对入口类做修改 extends SpringBootServletInitializer

 @MapperScan(basePackages = "com.baizhi.mapper")
 @SpringBootApplication
public class SpringbootJarApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootJarApplication.class, args);
    }
       /*针对war包使用*/
   protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
       return builder.sources(SpringbootJarApplication.class);
   }
 }

3.pom.xml中必须将打包方式声明成war

4.插件中指定 main函数

5.使用maven指令打包,并将war包放置在Tomcat的webapps中。项目名即为war包的名字,端口号为当前所使用的Tomcat的端口号。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值