zoukankan      html  css  js  c++  java
  • maven多模块项目聚合

    参考文档:

    http://kyfxbl.iteye.com/blog/1680045
    http://blog.csdn.net/wanghantong/article/details/36427411
    http://my.oschina.net/lujianing/blog/354121

    最近在整理公司软件项目工程结构,最初的设计模块间耦合度太高,过多的公共service与业务逻辑强相关。以至于后期要做集群系统的工作难以展开,于是这个时候选择重构是唯一的办法了。

    很荣幸这个光荣而又艰巨的任务被老大交给我和另外一个有5年JAVA经验的“老司机”,由于之前没有干过重构这种高端大气的活,这次也是抱着打打酱油瞻仰学习的态度来的,想想还有点小激动。

    可惜人算不如天算,跟我合作的搭档在接手2天后就辞职走人了,辞职的原因我是不得而知。但有个尴尬的问题就是:活谁干?这真令人绝望。。。

    往事休要再提,反正又不是第一次被坑了,生活还得继续。

    重构的第一项工作是要先整出来一个新的工程结构,这里简单记录下,使用maven构建项目框架的过程。

    基础结构如下:

    project
        |--business  (核心业务)
            |--business-api
            |--business-service
            |--business-message
            |--business-dao
            |--business-web
        |--common  (公共组件、服务、常量)
            |--common-component
                |--common-component-...
            |--common-service
            |--common-constants
            |--common-...
        |--management  (管理台)
            |--management-...
        |--taskserver (定时任务、批处理)
        |--msgserver  (消息队列)

    模块定义:

      business是整个工程的核心模块,它提供了对各终端(iOS、Android、Web&PC)的所有服务。

      business-api作为核心服务的提供者,基本上所有的业务操作都由它来完成,以war工程独立运行。集群方式下可以多部署几个api,在前端做好负载均衡即可。

      business-service 和 business-dao(mapper&entity) 是api的具体实现,这2者以jar包的形式供api依赖调用。

      business-message里存放了对外的接口契约(intf)、请求(request)和响应体(response),以jar包发行,方便供第三方或其他业务模块调用。

      business-web是我们的前端服务器,主要完成渲染和呈现的功能。一些像报表这样轻业务的功能可以在这里独立完成。以war包形式发行,支持集群部署。

      common是公共组件部分,一些常量或第三方接入的工作可以在这里实现。

      management是管理台,主要提供一些对业务编排、配置的的功能。

      taskserver批处理或定时任务服务器,独立运行。

      msgserver消息队列服务器,主要用来协助核心服务模块完成一些异步调用的工作。如发短信、消息推送等功能。

    创建maven工程:

    先创建一个父工程project用来做项目聚合

    创建business,这里选择maven module或者maven project都可以,只要类型是pom就可以。我喜欢平行结构这里选择maven project。大体步骤和上面雷同,唯独最后一步:

    在business下面创建2个war和3个jar模块(maven module):

    建立完成如下:

    其他模块的建立过程跟这里大同小异,再次略过。

     依赖关系:

     众所周知maven的使用pom.xml来完成依赖管理,我们可以通过图形化或者直接修改pom.xml的方式完成配置。

    添加依赖后生成的pom.xml如下:

    <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>
      <parent>
        <groupId>com.lichmama.project.business</groupId>
        <artifactId>business</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <groupId>com.lichmama.project.business.api</groupId>
      <artifactId>business-api</artifactId>
      <packaging>war</packaging>
      <dependencies>
          <dependency>
              <groupId>com.lichmama.project.business.service</groupId>
              <artifactId>business-service</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
          <dependency>
              <groupId>com.lichmama.project.business.dao</groupId>
              <artifactId>business-dao</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
          <dependency>
              <groupId>com.lichmama.project.business.message</groupId>
              <artifactId>business-message</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
      </dependencies>
    </project>

    (未完待续。。。)

  • 相关阅读:
    「BZOJ1954」Pku3764 The xor – longest Path
    【bzoj4260】【Codechef REBXOR】
    BZOJ_3012_[Usaco2012 Dec]First!
    【bzoj1174】[Balkan2007]Toponyms
    String
    前缀和
    [POI2008] CLO
    [Scoi2010] 游戏
    CodeForces892E
    并查集的删除操作
  • 原文地址:https://www.cnblogs.com/lichmama/p/5807762.html
Copyright © 2011-2022 走看看