• 关于springboot 打包问题 jar包和 war包


    起因:项目开发完成   需要打包部署了  发现自己不会打包 那么开始网上学习打包?

    那么怎么来打包那?

    我们以前没有采用springboot 时候我们都是直接将项目打成war包形式  然后放到tomcat webapp下面  

    开始打包:

    我对原理现在也不是很理解  我给出的是自己对打成包  并运行成功的案例?

    1.开始第一个war

      先上代码: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>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.zero2ipo</groupId>
        <artifactId>fbs</artifactId>
        <version>0.0.1</version>
        <packaging>war</packaging>
        <name>fbs</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <!---->
                <!--<exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>-->
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.auth0</groupId>
                <artifactId>java-jwt</artifactId>
                <version>3.5.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.8.1</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.5</version>
            </dependency>
            <!--alibaba  fastjson-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.29</version>
            </dependency>
            <!--分页插件-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>5.1.2</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.vaadin.external.google</groupId>
                <artifactId>android-json</artifactId>
                <version>RELEASE</version>
            </dependency>
            <!--接口文档swagger2-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.2.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.2.2</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.9.1</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.1</version>
            </dependency>
            <!--poi操作文档-->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.15</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml-schemas</artifactId>
                <version>3.15</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.15</version>
            </dependency>
            <!--热部署-->
           <!-- <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>-->
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                   <configuration>
                        <mainClass>com.zero2ipo.fbs.FbsApplication</mainClass>
                    </configuration>
                </plugin>
    
            </plugins>
        </build>
    
    </project>

    pom文件我们需要添加的 

    1) <packaging>war</packaging> 这里一定要是war
    2) 将springboot 内置的tomcat去除 或者叫他在运行期不起作用 要不然会和我们自己tomcat冲突
      <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
      </dependency>
    3)修改重启类
    直接上代码:
    @EnableTransactionManagement
    @SpringBootApplication
    @EnableSwagger2
    @MapperScan("com.zero2ipo.fbs.core.mapper")
    public class FbsApplication  extends SpringBootServletInitializer{
    
        public static void main(String[] args) {
            SpringApplication.run(FbsApplication.class, args);
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(this.getClass());
        }
        /** 测试提交 **/
    
    }

    一定要继承

    SpringBootServletInitializer
    重写
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(this.getClass());
        }
    这样就可以实现了打包 我采用的是idea
    右侧的maven project ---lifecyle ---- 先clean ---- package 打包就可以打包完成 在target目录下出现你想要的包了

    2:将springboot 打jar包
    jar包就非常简单了 其实只要我们的程序在本地运行没问题那么
    只需要在<packageing>jar</packaging> 这里已修改就可以
    同样采用idea maven project --lifecyle--- pageage 打包就可以 出现了 项目.jar文件
    运行方式 采用java -jar *.jar 运行

    --------------------------------------------------------------------------------------------------------------------------
    开始来说说我遇见的坑吧 上面写的很简单 我第一次给springboot打包 遇见的坑来描述一下
    1:当你打包*.jar 运行的时候 有可能会出现 什么主类找不到
    java jar *.jar 和java -jar *.jar 如果采用第一种输入 就会说找不到 主类 原因是自己写错了
    2:项目好不容跑起来了 那么忽然报异常 异常第一句说的是springboot 2.1.2.RELEASE! 来一个叹号这种 下面在报一个 端口冲突的异常
    我开始异常看的最上面的 springboot异常 各种百度 其实就是端口冲突导致的 所以异常的查看要细心 如果有端口冲突第一时间解决一下
    3: 这个异常就影响我好久了项目启动没有任何问题了 启动时候缓存数据也都加载到缓存 这时候你清晰的看见tomcat打印日志查询了数据
    然而当你在点击其他请求的时候报错了


    这是什么原因那?
    首先我自己的idea运行的项目并没有报错 ,我就百度 查说Mybatis这种错误 其实一查这个错误太多了 各种解释 都不是真正的问题所在,如果你的开发本地没有任何问题的话。那么请检查是不是
    配置 mybatis配置 我这里原因是我没有加 mapper.xml引用 我在mybati_config.xml文件中写了 mappers 引用但是还是报错
     这是错误的请不要粘贴
    <mappers>
    <mapper resource="classpath*:com.zero2ipo.fbs.core.mapper/**.xml"/>
    </mappers>
    那么我的解决是
    application.properties 文件中
    正确的配置:mybatis.mapper-locations=classpath:com/zero2ipo/fbs/core/mapper/*.xml
    这样就解决了

    在第一次打包的时候作为初学者 请不要盲目百度 百度的各种讲解 太多了 针对一点想 如果你感觉百度上的你试了 步骤一点没有错那么多数是你配置文件项目的配置错误 导致打包的时候
    出现了问题






  • 相关阅读:
    【知乎精选】一个产品经理的成长(转)
    互联网性能与容量评估的方法论和典型案例
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式
    基于Windows运行库的UWP—C#高级编程(第10版)学习笔记3
    .Net Core的重要性(价值)—C#高级编程(第10版)学习笔记2
    本书主要内容—C#高级编程(第10版)学习笔记1
    C#—.net开发首选编程语言—摘自《C#高级编程第10版》
    表格标签
    伪类
    ps小知识点备忘录
  • 原文地址:https://www.cnblogs.com/lwdmaib/p/10551935.html
Copyright © 2020-2023  润新知