springboot多模块打war包(spring boot多模块打包)

spring boot 多模块在tomcat上运行

我们项目一般有dao层,service层,controller层,复杂一点的项目有前台系统controller和后台系统controller,如果把它们全看成是模块的话,模块之间的关系如图显示。(示例项目为演示方便, 省略了service模块 )

其中模块的身份有三个,“被引用”、“实际运行”、“作为父模块”。

先看utils、dao、service,它们三个的身份是“被引用”的,所以它们的打包方式必须是

然后作为被引用的模块,自身带有支撑自身运行的依赖包,如果单纯打包的话,jar包大小会非常大

所以我们得加上

以web模块为例,在pom.xml中,我们依赖了dao包,那还需要依赖utils包吗?不需要,因为dao包里面已经依赖了utils包了,会有传递。

打包方式必须是war

因为要打包在tomcat中运行,所以这里对WebApplication.java和网上一样的配置,就不赘述了

这里没什么特殊要配置的,只需要注意tomcat默认版本是8.5,做好自己的本地/服务器的tomcat适配就好

好了,准备就绪,就开始执行maven的package命令打包成war

但是这个时候出现问题!

原来是没有主函数作为启动类

加上便是

再次运行packge,找到web的war包

拷贝到webapps下,启动tomcat,就可以运行啦

留个作业,如何用intellij里配置的tomcat启动web项目?

Spring boot 打包为war包报错:提示缺少web.xml

在开发SpringBoot多模块项目中,打包时报错了,如下:

其中SpringBootApplication启动类在rest模块,rest 模块依赖于 sdk 模块,sdk 模块依赖于 core 模块,core 模块依赖于common模块。构建单模块项目和多模块项目打jar包时都不会报错。

maven 插件 maven-war-plugin 中 Servlet 版本太低,要求必须要有web.xml文件才行。

要么,添加插件配置项,如下:

要么,修改其默认版本,如下:

1.

springboot多模块打war包(spring boot多模块打包)  第1张

Springboot 进行war包部署,以及踩坑历险!!!

使用springboot也很长时间了,一直都是使用内置Tomcat运行项目,最近由于公司架构需要将项目以war包形式发布封装组件,又不想把自己多天的成功重新用spring造一遍,遂有了将springboot打成war包的想法。参考网上各种方法,自己也在坑里挣扎了许久。脱坑后总结一下,供大家参考,也给自己提醒。

首先需要一个能成功运行的springboot项目,这里不在重新搭建,直接用已知项目作为更改。

springboot默认是使用内部Tomcat启动,如果使用外部Tomcat的话同样存在一个入口的问题,这里我们只需要将启动类继承SpringBootServletInitialize告诉外部Tomcat在这个类下启动(注解并不需要这么多,这里只是为了学习和记录,大家可以参考参考)。

首先我们需要将springboot打包方式更改为war

springboot 内置了Tomcat,为了防止Java包冲突我们需要排除springboot默认Tomcat依赖,然而Tomcat启动有需要一些sevlet或者el等类去编译,因此还需要依赖spring-boot-starter-tomcat,当然这里的作用域需要设置为provided

接着是添加maven插件

pom文件修改就到这里。

不知道你们是否正常启动,如果有问题继续看看我踩的坑

1.启动后无法正常访问

在cmd里面查看我springboot配置的端口8084,使用netstat -ano|findstr "8084",没有找到相关进程。

同样查看Tomcat配置的端口8087,使用

netstat -ano|findstr "8084",看到端口以及被监听,根据进程号可以查看和kill端口。

注意:在application.properties里面配置的端口是springboot内部端口,同外部Tomcat启动的话端口并不是 application.properties的配置端口,而是外部Tomcat所配置的端口。

2.端口问题解决后还是没法访问,于是若若的看了一下Tomcat日志,报错了。。。堆栈日志我就不贴了,告诉大家出现这样的报错

Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager 。什么?我不是已经加入spring-boot-starter-tomcat 相关依赖了吗?这个问题我苦苦在坑里待好几天,终于在网上找到了答案。原因是我的tomcat7提供的el-api 和项目里面的el-api.jar冲突,解决办法也很简单,就是将你IDE(IDEA 或eclipse)安装目录下的el-api.jar 替换Tomcat的lib目录下的el-api.jar 或者使用Tomcat8 即可解决问题。

暂时就这么多,终于可以helloword了,如果大家还有什么坑可以贴出来一起交流交流。

springboot项目打war包,开机自启动

那么如果想要开机之后,项目自动运行起来要怎么做呢?

1.在pom.xml中添加依赖

2.右击下图鼠标选中区域,点击 “publish”发布一下项目

3.点击maven install打包

4.点击完之后,控制台开始执行,当我们看到BUILD SUCCESS那么就成功啦

7.将项目名.war这个文件ctrl+c拷贝一下,到D盘的根目录去粘贴一下(可以重命名)

9.再次打开记事本,在d盘创建一个文本文件(命名为startup.vbs)扩展名将txt改为vbs

功能:隐藏上一个bat的黑窗口的。否则只要关闭黑窗口项目就会结束。运行startup.vbs之后会隐藏黑窗口。

在开始菜单中,右击启动,打开,将刚才创建的vbs,生成一个快捷方式拖进去

然后重启就可以自动启动啦!

需要注意的地方就是:因为之前在tomcat上面部署,然后去打开项目在浏览器地址输入的是这样的,因为我的tomcat端口设置的是80,所以可隐藏不写 ,如图,但是可以看到,发现并没有进去。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 13:53
下一篇 2023-09-23 13:53

相关推荐

发表回复

登录后才能评论