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项目完成!