spring boot 多模块在tomcat上运行

2017-09-21  本文已影响0人  aquarius_wing

网上大多数 spring boot 教程都是以单模块项目来介绍的,本文采用多模块(一个父模块,多个子模块之间有依赖)的项目来讲解 spring boot 的配置。

模块之间的关系

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

其中utils是自己的工具包

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

被引用的模块

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

<packaging>jar</packaging>

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

同时还会有个问题,模块生成的包之间的依赖还会丢失

所以我们得加上

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<!--可以生成不含依赖包的不可执行Jar包-->
<configuration><classifier>exec</classifier></configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

实际运行的模块

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

打包方式必须是war

<packaging>war</packagin>

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

作为父模块

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

开始运行

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

两种方式都可以

但是这个时候出现问题!

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.7.RELEASE:repackage (default) on project demo-utils: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.7.RELEASE:repackage failed: Unable to find main class -> [Help 1]

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

加上便是

最普通的主函数就可以

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读