起因:项目开发完成 需要打包部署了 发现自己不会打包 那么开始网上学习打包?
那么怎么来打包那?
我们以前没有采用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.0modelVersion> <parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.1.2.RELEASEversion> <relativePath/> parent> <groupId>com.zero2ipogroupId> <artifactId>fbsartifactId> <version>0.0.1version> <packaging>warpackaging> <name>fbsname> <description>Demo project for Spring Bootdescription> <properties> <java.version>1.8java.version> properties> <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-data-elasticsearchartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-data-redisartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-tomcatartifactId> <scope>providedscope> dependency> <dependency> <groupId>org.mybatis.spring.bootgroupId> <artifactId>mybatis-spring-boot-starterartifactId> <version>2.0.0version> dependency> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <optional>trueoptional> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <scope>runtimescope> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> <dependency> <groupId>com.auth0groupId> <artifactId>java-jwtartifactId> <version>3.5.0version> dependency> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-lang3artifactId> <version>3.8.1version> dependency> <dependency> <groupId>org.mybatis.generatorgroupId> <artifactId>mybatis-generator-coreartifactId> <version>1.3.5version> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>fastjsonartifactId> <version>1.2.29version> dependency> <dependency> <groupId>com.github.pagehelpergroupId> <artifactId>pagehelperartifactId> <version>5.1.2version> dependency> <dependency> <groupId>com.github.pagehelpergroupId> <artifactId>pagehelper-spring-boot-autoconfigureartifactId> <version>1.2.3version> dependency> <dependency> <groupId>com.github.pagehelpergroupId> <artifactId>pagehelper-spring-boot-starterartifactId> <version>1.2.3version> dependency> <dependency> <groupId>com.vaadin.external.googlegroupId> <artifactId>android-jsonartifactId> <version>RELEASEversion> dependency> <dependency> <groupId>io.springfoxgroupId> <artifactId>springfox-swagger2artifactId> <version>2.2.2version> dependency> <dependency> <groupId>io.springfoxgroupId> <artifactId>springfox-swagger-uiartifactId> <version>2.2.2version> dependency> <dependency> <groupId>javax.servletgroupId> <artifactId>javax.servlet-apiartifactId> <version>3.1.0version> <scope>providedscope> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-coreartifactId> <version>2.9.1version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-databindartifactId> <version>2.9.1version> dependency> <dependency> <groupId>org.apache.poigroupId> <artifactId>poiartifactId> <version>3.15version> dependency> <dependency> <groupId>org.apache.poigroupId> <artifactId>poi-ooxml-schemasartifactId> <version>3.15version> dependency> <dependency> <groupId>org.apache.poigroupId> <artifactId>poi-ooxmlartifactId> <version>3.15version> dependency> dependencies> <build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> <configuration> <mainClass>com.zero2ipo.fbs.FbsApplicationmainClass> configuration> plugin> plugins> build> project>
pom文件我们需要添加的
1)war 这里一定要是war
2) 将springboot 内置的tomcat去除 或者叫他在运行期不起作用 要不然会和我们自己tomcat冲突
org.springframework.boot spring-boot-starter-tomcat provided
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包就非常简单了 其实只要我们的程序在本地运行没问题那么
只需要在jar 这里已修改就可以
同样采用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 引用但是还是报错
这是错误的请不要粘贴
那么我的解决是
application.properties 文件中
正确的配置:mybatis.mapper-locations=classpath:com/zero2ipo/fbs/core/mapper/*.xml
这样就解决了
在第一次打包的时候作为初学者 请不要盲目百度 百度的各种讲解 太多了 针对一点想 如果你感觉百度上的你试了 步骤一点没有错那么多数是你配置文件项目的配置错误 导致打包的时候
出现了问题