出错场景
部门有个项目是spring boot + jsp 搭建的。前同事运行没有问题。我这边运行不起来。
项目目录结构
- 总项目
- web模块
- resources
- application.properties 这里 spring.profiles.include 核心模块的properties
- webapp文件夹 包含 jsp代码和静态文件
- resources
- core模块
- resources
- application-core-dev.properties 这里配置了datasource 等信息
- resources
- web模块
对idea做了一系列配置,如下
配置artifact Alt+Ctrl+Shift+S 打开配置面板或者 File -> Project Structure -> Artifacts -> 右侧+号 Web application: explored -> from modules -> 选择web模块
配置静态文件路径
IDEA 的File -> Project Structure -> Modules -> donut-admin -> Web -> 右侧Web resource directory 设置为 web模块 下的webapp文件夹配置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目录下。