美文网首页
spring boot 多模块在tomcat上运行

spring boot 多模块在tomcat上运行

作者: aquarius_wing | 来源:发表于2017-09-21 12:35 被阅读0次

    网上大多数 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项目?

    相关文章

      网友评论

          本文标题:spring boot 多模块在tomcat上运行

          本文链接:https://www.haomeiwen.com/subject/wxkzsxtx.html