maven-mybatis多项目的研究进展

苏友朋

发布于 2017.02.06 21:00 阅读 902 评论 1

    近日在研究maven框架的多项目方式

    目前进度为:

            对当前的LindaBlog进行了简单的用户管理的和系统功能的分离。并取得了较好的结果

            目前分离情况如下

                   总结构为:ceshi6为总的项目框架,LindaBlog为系统功能,usermanagement为用户管理。

                                 

                                由于各pom的信息较大,暂不展示

                                只展示比较重要的:ceshi6的pom:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>   <groupId>ceshi6</groupId>  <artifactId>ceshi6</artifactId>  <packaging>pom</packaging>  <version>1.0-SNAPSHOT</version>  <modules>  <module>LindaBlog</module>  <module>usermanagement</module>  </modules>   </project>
                                LindaBlog的pom:    (表示其引用usermanagement)
<dependency>  <groupId>ceshi6</groupId>  <artifactId>usermanagement</artifactId>  <version>1.0-SNAPSHOT</version>  <type>war</type> </dependency> 
                                 usermanagement的pom必须和LindaBlog的相同除上述引用外,尤其注意依赖包的版本问题

                       LindaBlog的层次结构:

                                                   

                               usermanagement的层次结构:

                                                   

可以看出:被引用一方的数据源的配置文件,也就是applicationContext.xml文件是可以省略的,而为他服务的一系列配置文件都可以被省略,当我们运行主程序时,我们发现被引用的程序使用的是引用方的配置文件,而由此可以猜测出被引用方和引用方的层次结构需要完全相同(如sqlmap包,com.lindasoft包等)。而在研究过程中比较有趣的是,我们用Junit也就是我们常说的测试类来进行引用方的测试的时候比如说用到引用方的xxxmapper接口,这时如果在引用方的sqlmap包下没有相对应的xxxmapper.xml时会出以下错误:

                                                  

而当启动项目由controller使用@Resource

进行依赖注入方式使用的时候就可以完美的将两方面的功能分离开来了(简单的说就是这样在引用方就可以不去写sqlmap包下的xxxmapper.xml文件了)

                 


                     该项目目前的样子:用于权限管理的表一共有5个,除user表(由于各个项目的user表属性并不相同所以暂时无法统一)外,剩余四表的基本操作和进阶操作都可以放在被引用方,由于权限,特别是关于登录的的带权限的用户的信息查询关系到用户的信息所以暂时放在引用方,但值得欣慰的是,在引用方的xxxmapper.xml中是可以直接引用被引用方的xml中的方法的。由于此项目的后台管理的controller还未写,所以我从另外的项目中复制了一个角色管理的controller,经测试可以使用。

                      



       以上就是目前的情况。

       2017.2.6 20.58 苏友朋 御景湾小区