网上大多数 spring boot 教程都是以单模块项目来介绍的,本文采用多模块(一个父模块,多个子模块之间有依赖)的项目来讲解 spring boot 的配置。
模块之间的关系
我们项目一般有dao层,service层,controller层,复杂一点的项目有前台系统controller和后台系统controller,如果把它们全看成是模块的话,模块之间的关系如图显示。(示例项目为演示方便,省略了service模块)
其中模块的身份有三个,“被引用”、“实际运行”、“作为父模块”。
被引用的模块
先看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项目?