记spring boot项目打包成war部署发布踩过的坑

spring boot项目完成后打包成war发布运行。(开发工具:IDEA,环境:window 10 64位)
第一步:打包成war(包括其中踩过的坑)
pom.xml文件中要修改的内容:

//<!--打包格式:war		packaging放在project标签下就可以-->
<packaging>war</packaging>

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     //<!--打包war添加-->
     <exclusions>
          <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
          </exclusion>
     </exclusions>
</dependency>

//<!-- 打war包时加入此项, 告诉spring-boot tomcat相关jar包用外部的,不要打进去 -->
 <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-tomcat</artifactId>
       <scope>provided</scope>
 </dependency>

//<!-- springboot自带的tomcat并没有携带tomcat-embed-jasper的依赖,如果不引入tomcat-embed-jasper依赖,使用SPringboot启动项目则会无法成功-->
<dependency>
     <groupId>org.apache.tomcat.embed</groupId>
     <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

//<!--语音播报依赖-->
<!--<dependency>
     <groupId>com.hynnet</groupId>
     <artifactId>jacob</artifactId>
     <version>1.18</version>
</dependency>-->

//<!--指定打包名称		放在build标签下-->
<finalName>MavenBoot</finalName>

//<!--数据库依赖,手动添加--><!--打包添加-->
<dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>sqljdbc4</artifactId>
      <version>4.0</version>
</dependency>

如果不需要导入sqljdbc4依赖的可以直接看:第二步!

我这里有两个坑:(这里的坑是导入sqljdbc4和 jacob 产生的)
第①个坑:数据库依赖是下载不下来的,需要另外下载之后放到库里面,这里直接下载会报错:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

先从网盘将依赖包下载:https://pan.baidu.com/s/10gixYm0ivjxk_dboj4HTIA
提取码:du5e

1:复制sqljdbc4.jar 放到项目的 lib 目录下,右键 add as libraries 添加为依赖(到这里已经可以实现了依赖包的添加,下面第2步和这里效果一样,重复1、2不会冲突)
2:找到本地依赖库,将sqljdbc4.jar放到库中(查看本地仓库方法)

在这里插入图片描述

pom.xml文件中再放这个就可以了(这里第2步是为了方便打包war)

<dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>sqljdbc4</artifactId>
      <version>4.0</version>
</dependency>

第②个坑:我这里语音播报的依赖是还没有导入的,这里和方式一一样需要手动添加到项目的lib目录里:右键 add as libraries 添加为依赖,这里的jacob包和上一步一样放进去(但是后面我打包出来的war在tomcat上面运行报错:java.lang.UnsatisfiedLinkError: no jacob-1.18-x64 in java.library.path)
语音播报功能实现
在开发软件上可以运行,但是tomcat却说找不到我们的依赖包,这就很魔性了。。。
然后到我们的依赖库里看下,发现这个包是有的:

在这里插入图片描述
网上大部分答案都是将 jacob-1.18-M2-x64.dll(我电脑是64位的) 文件放到目录:
C:\Windows\System32
C:\Windows\SysWOW64
\Tomcat9.0\bin
C:\Program Files\Java\jdk-9\bin
C:\Program Files\Java\jre-9\bin
但凡有提到的目录我全部都拷贝了一份进去,但是!!!!!
还是没能解决我的这个错误!!!
然后我就 网上各种找答案,然后运行tomcat启动war项目时是有目录加载依赖的,就将jacob包放到该目录下:(这个目录好像是要先打包war文件出来,启动tomcat才解压出来。也就是我们打包的war文件名的解压包)
在这里插入图片描述

注意:包名最好一致

第二步:程序入口要修改的内容

方法要继承:SpringBootServletInitializer
重写方法:SpringApplicationBuilder

@SpringBootApplication
//@ServletComponentScan//下面这行不需要就换成这个,具体为啥我也不知道。
@MapperScan("com.boot.mapper")//这里是我的SQL处理语句
public class MavenBootApplication extends SpringBootServletInitializer {

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

    /**【打包war时初始化配置】**/
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
        return application.sources(MavenBootApplication.class);
    }

}

到这里基本就能打包出war文件了,打包步骤:
build —> build Artifacts —> (MavenBoot项目名)MavenBoot:war —> build
在这里插入图片描述
到这里我们的项目打包war就打包好了:
在这里插入图片描述
将这个文件复制到tomcat的webapps目录,启动tomcat就会自动解压生成一个和项目一样的目录:
在这里插入图片描述
在tomcat的bin目录下启动tomcat:进到bin目录 —> 在地址栏输入cmd回车 —> 命令行输入:startup
在这里插入图片描述
在这里插入图片描述
根据自己在项目中配置的端口访问项目。

注意!!!!!!!!!!
这里访问的路径一定要加上打包后的项目名称,举个例子:
原路径:localhost:8080/login
打包后:localhost:8080/MavenBoot/login	(MavenBoot是打包项目的名称)
数据访问层接口也要自行在控制器或者访问端加上项目名称

在这里插入图片描述
至此,使用IDEA软件打包war项目完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值