IDEA建立多模块JavaWeb项目

原始需求

现在做的项目是JavaWeb后台服务,Web部分包含前端业务逻辑的实现和报表相关实现,其中报表部分是相对独立的,除了提取数据的部分,与别的业务逻辑没有相关。

业务逻辑部分包含的内容

  • 登入登出;
  • 权限控制;
  • 前端页面引导;
  • 会话管理;
  • 外部接口;
  • 工程接口。
    由于做了前后端分离,前端属于单页面应用,直接连接MongoDB数据库进行功能实现(除首页部分外,可以跳过后端),所以这一部分的业务逻辑并不复杂,都是基础部分。

报表部分包含的内容

报表作为一个独立的部分,以iFrame方式嵌入到前端页面中即可。因此,报表模块也是一个JavaWeb项目,包含对应的Controller响应请求。
另外,报表模块还提供报表需要的程序数据源(使用帆软的报表控件,MongoDB数据库,使用程序数据源)。

父Project建立

  • 在IDEA中新建Maven Project,不选择“Create from archetype”,填写GroupId和ArtifactId,完成新建;
  • 由于该Project是要作为父Project容器使用,因此不需要src目录,删除掉src目录;
  • 如有需要,配置Maven本地仓库的路径(Settings中配置);
    IDEA建立多模块JavaWeb项目
  • 设置Project bytecode version,在Java Compiler(Settings中)配置;(我这边新建的工程缺省是1.5的JDK版本,还不晓得这个默认值是在哪里配置的);
    IDEA建立多模块JavaWeb项目
  • 需要注意到的就是父Project的pom中,packaging属性为pom;
  • 在pom中配置整个工程的一些缺省属性;譬如如果使用了私服,需要配置repositories和pluginRepositories;另外就是一些工程默认配置(project.build.sourceEncoding、project.build.jdk、project.build.locales)等;再有就是各个依赖的jar包的版本信息等;

双Web模块建立

在父Project下新建Module。
- 因为要新建的是Web模块项目,因此在新建Maven项目的时候选择“Create from archetype”,然后选择webapp。
- 新建的时候设置ArtifactId即可,别的属性会从父Project继承;
- IDEA2016新建Maven的webapp项目以后,src/main目录下没有Java目录,需要自行新建,并配置各个目录的“Sources/Resources/Tests/Test Resources”属性等;
IDEA建立多模块JavaWeb项目
此时,Web子Module就新建起来了。
接下来编写Controller/Service/Dao/Domain等,编写前端文件,进行Web开发。

新建之后,在父Project的pom中会出现“modules”节点,子节点为新建的Module。

Web共用基础模块建立

由于上面提到的业务模块Webapp和报表模块Webapp都会用到Dao的部分,这个Dao是以单例的方式来提供服务的,不涉及任何的框架。可以单独提取为一个独立的Module,以jar包的方式提供服务。
- 新建一个普通的Maven项目,“Create from archetype”选择“quickstart”方式进行新建;
- 配置对应的目录属性,并将相应的文件提取到该子Module中;
- 在pom中添加相关的依赖;
这里遇到一个问题,就是使用Maven菜单Download和Reimport了一万次都没有能把依赖添加进来;删除了iml文件和.idea文件夹后重试也不好用。
最后使用的办法如下:
IDEA建立多模块JavaWeb项目
IDEA建立多模块JavaWeb项目
按照如上的方式,在Project Structure中,添加Library依赖,选择本Project中已经包含的相关依赖即可添加成功。
- 在另外两个Web项目中添加对本Module的依赖;
IDEA建立多模块JavaWeb项目

先Build公用的子Module项目,然后分别编译运行各个Web项目。跑通收工!