從netty項目組織入門maven的多modules模塊配置

Netty是一套提供異步的、事件驅動的網絡應用程序框架,同時也是工具包。我們可以將它作爲項目的核心框架,同時也可以用他提供的部分功能來對項目進行支持,因此項目功能的模塊化就顯得很重要,這也是我們平時做項目所追求的可重用性。
netty一個項目整體的組織如下:
netty項目組織
這裏不說項目的各個子模塊的功能,只是看如何實現項目模塊的分離和組織。


在我們平時的開發中可能會有一個這樣子的結構:
包組織
如果是一個小項目這樣做也不錯,至少做到了比較低層次的“高內聚,低耦合”。但是如果有10個這樣的小項目,每個都會用到其中的util包,那麼就會比較難過了,單是每個項目去同步util的狀態就會耗很多精力。
如果用maven的模塊化來進行管理會優美許多:
maven多模塊模擬
來看一下項目的構成:
首先tiegr-parent項目是我們真正的主項目,他包含了3個子模塊:tiger-all,tiger-modules1和tiger-util 3個子模塊。每個模塊可以作爲單獨的項目進行開發和管理。並且這樣做最直接的表現就是可重用性的提高以及模塊間耦合度的降低。項目間的依賴完全有配置文件進行管理。
下面是模擬的項目間的依賴關係及配置:

<!-- tiger-parent/pom.xml -->
<?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>com.tiger</groupId>  
  <artifactId>app-parent</artifactId>  
  <packaging>pom</packaging>  
  <version>1.0</version>  
  <modules>  
      <module>tiger-modules1</module>
      <module>tiger-util</module>
      <module>tiger-all</module>
  </modules> 

</project>
<!-- tiger-modules1/pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.tiger</groupId>
    <artifactId>app-parent</artifactId>
    <version>1.0</version>
  </parent>

  <artifactId>tiger-modules1</artifactId>
  <packaging>jar</packaging>

  <name>tiger-modules1</name>

  <dependencies>

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>tiger-util</artifactId>
        <version>${project.version}</version>
    </dependency>

  </dependencies>

</project>
<!-- tiger-util/pom.xml -->
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.tiger</groupId>
    <artifactId>app-parent</artifactId>
    <version>1.0</version>
  </parent>

  <artifactId>tiger-util</artifactId>
  <packaging>jar</packaging>

  <name>tiger-util</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <!-- JUnit testing framework -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
  </dependencies>

</project>

從這裏看出我們的項目間通過依賴關係進行管理,將每個模塊或者說功能作爲單獨的項目進行引入。不僅關係很清晰,而且還可以爲每個模塊做到最大化的“瘦身”。
代碼都這樣管理突然覺得整個人心情都好了很多,有沒有~^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章