2021-12-30 spring boot+jsp 项目 多模块下报错

出错场景

部门有个项目是spring boot + jsp 搭建的。前同事运行没有问题。我这边运行不起来。
项目目录结构

  • 总项目
    • web模块
      • resources
        • application.properties 这里 spring.profiles.include 核心模块的properties
        • webapp文件夹 包含 jsp代码和静态文件
    • core模块
      • resources
        • application-core-dev.properties 这里配置了datasource 等信息

对idea做了一系列配置,如下

  1. 配置artifact Alt+Ctrl+Shift+S 打开配置面板或者 File -> Project Structure -> Artifacts -> 右侧+号 Web application: explored -> from modules -> 选择web模块

  2. 配置静态文件路径
    IDEA 的File -> Project Structure -> Modules -> donut-admin -> Web -> 右侧Web resource directory 设置为 web模块 下的webapp文件夹

  3. 配置tomcat
    IDEA 运行配置中Edit cofigurations -> + -> Tomcat server local -> 配置tomcat 本地的路径

出错代码

部署至tomcat的时候,提示
Failed to configure a datasource: url attribute is not specified and no embeded datasource could be configured.

分析

在web 模块里的配置设置包含了core里面的配置文件,core里的配置文件配置了datasource的url。这里的配置是没有问题的。

查看编译后的结果,在项目的out 文件夹下,看到只有web文件的编译结果和配置文件,没有core的。说明是idea编译后,没有将core模块的编译结果拷贝到这个文件夹里。

解决方案

找了许久,也没找到解决方法。
最终,找到解决方案,是idea还有一个地方没有配置。

在 File -> Project Structure -> Artifacts 右侧选中前面新建的artifact 右侧output layout中,classes 中,添加每个子模块的编译结果,即 compile output和 jpa descriptors 。该配置是把idea编译后的结果,统一拷贝到该out目录下。

image.png

你可能感兴趣的:(2021-12-30 spring boot+jsp 项目 多模块下报错)