原始需求
现在做的项目是JavaWeb后台服务,Web部分包含前端业务逻辑的实现和报表相关实现,其中报表部分是相对独立的,除了提取数据的部分,与别的业务逻辑没有相关。
业务逻辑部分包含的内容
- 登入登出;
- 权限控制;
- 前端页面引导;
- 会话管理;
- 外部接口;
- 工程接口。
由于做了前后端分离,前端属于单页面应用,直接连接MongoDB数据库进行功能实现(除首页部分外,可以跳过后端),所以这一部分的业务逻辑并不复杂,都是基础部分。
报表部分包含的内容
报表作为一个独立的部分,以iFrame方式嵌入到前端页面中即可。因此,报表模块也是一个JavaWeb项目,包含对应的Controller响应请求。
另外,报表模块还提供报表需要的程序数据源(使用帆软的报表控件,MongoDB数据库,使用程序数据源)。
父Project建立
- 在IDEA中新建Maven Project,不选择“Create from archetype”,填写GroupId和ArtifactId,完成新建;
- 由于该Project是要作为父Project容器使用,因此不需要src目录,删除掉src目录;
- 如有需要,配置Maven本地仓库的路径(Settings中配置);
- 设置Project bytecode version,在Java Compiler(Settings中)配置;(我这边新建的工程缺省是1.5的JDK版本,还不晓得这个默认值是在哪里配置的);
- 需要注意到的就是父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”属性等;
此时,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文件夹后重试也不好用。
最后使用的办法如下:
按照如上的方式,在Project Structure中,添加Library依赖,选择本Project中已经包含的相关依赖即可添加成功。
- 在另外两个Web项目中添加对本Module的依赖;
先Build公用的子Module项目,然后分别编译运行各个Web项目。跑通收工!