1. 程式人生 > >一、web專案開發進階之分模組管理專案之通用模組

一、web專案開發進階之分模組管理專案之通用模組

  以前的web專案都是統一一個工程,其他人員在這個專案拉取分支進行開發,但是若需要多個人協作同時進行開發時,會造成各種各樣的問題。為了解決這些問題,按照業務邏輯進行區分,將一個專案按照多個模組進行構建。
(一)所有專案的父模組“parent”
  父模組的主要功能是管理各種依賴及其依賴的版本,同時注意打包方式為“jar”包(使用“mvn clean install命令,即可將jar包釋出到本地倉庫,以供其他模組依賴”),以供子模組依賴!如下:

<?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>org.pc</groupId> <artifactId>parent</artifactId> <version
>
1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version
>
1.8</java.version> <spring.version>4.3.17.RELEASE</spring.version> <mysql.connector.java.version>5.1.29</mysql.connector.java.version> <alibaba.druid.version>1.0.2</alibaba.druid.version> <mybatis.version>3.4.2</mybatis.version> <mybatis.pagehelper.version>5.1.4</mybatis.pagehelper.version> <spring.mybatis.version>1.3.1</spring.mybatis.version> <javax.servlet.api.version>3.1.0</javax.servlet.api.version> <jsp.api.version>2.2.1-b03</jsp.api.version> <jstl.version>1.2</jstl.version> <jedis.version>2.9.0</jedis.version> <solr.solrj.version>7.4.0</solr.solrj.version> <junit.version>4.12</junit.version> </properties> <dependencyManagement> <dependencies> <!-- 為了防止用Maven管理Spring專案時,不同的專案依賴了不同版本的Spring,可以使用Maven BOM來解決者一問題, 即可統一版本,而且,在引入BOM之後,在引入其他Spring依賴時,都無需指定版本 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>${spring.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--###################### spring用到的依賴 start######################--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <!-- 這個jar檔案是所有應用都要用到的,它包含訪問配置檔案、建立和管理bean 以及進行Inversion of Control / Dependency Injection(IoC/DI)操作相關的所有類。如果應用只需基本的IoC/DI 支援,引入spring-core.jar 及spring-beans.jar 檔案就可以了。外部依賴spring-core,cglib-nodep.jar。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <!-- 排除commmons-logging --> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- spring表示式語言 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> </dependency> <!-- 為JDBC、Hibernate、JDO、JPA等提供的一致的宣告式和程式設計式事務管理。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <!-- 面向切面程式設計 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </dependency> <!--###################### spring用到的依賴 end######################--> <!--######################資料庫相關 start############################--> <!-- MYSQL(連線mysql資料庫常用) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.connector.java.version}</version> </dependency> <!-- 阿里巴巴資料來源包 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${alibaba.druid.version}</version> </dependency> <!--*************以下是SpringMVC中Mybatis需要用到的依賴******************--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!--mybatis-spring整合包,這樣就可以通過spring配置bean的方式進行mybatis配置了,不然需要單獨使用mybatis的配置--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${spring.mybatis.version}</version> </dependency> <!-- mybatis分頁外掛 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${mybatis.pagehelper.version}</version> </dependency> <!--*************以上是SpringMVC中Mybatis需要用到的依賴******************--> <!--######################資料庫相關 end############################--> <!--###################### jsp相關JAR包 start######################--> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${javax.servlet.api.version}</version> <scope>provided</scope> </dependency> <!-- JSP --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2.1-b03</version> </dependency> <!-- JSTL --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--###################### jsp相關JAR包 end######################--> <!-- redis客戶端 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency> <!-- solr-solrj全文搜尋 --> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>${solr.solrj.version}</version> </dependency> <!-- JUNIT(測試工具類) --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> </project>

(二)常用工具模組“common”

<?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>org.pc</groupId>
    <artifactId>common</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <commons.cli.version>1.4</commons.cli.version>
        <commons.codec.version>1.11</commons.codec.version>
        <commons.fileupload.version>1.3.3</commons.fileupload.version>
        <commons.io.version>2.6</commons.io.version>
        <commons.lang3.version>3.7</commons.lang3.version>
        <commons.collections4.version>4.1</commons.collections4.version>
        <jackson.version>2.8.7</jackson.version>
        <logback.ext.spring.version>0.1.4</logback.ext.spring.version>
        <logback.classic.version>1.1.7</logback.classic.version>
        <jcl.over.slf4j.version>1.7.25</jcl.over.slf4j.version>
    </properties>

    <dependencies>
        <!-- CLI 即Command Line Interface,也就是"命令列介面",它為Java 程式訪問和解析命令列
             引數提供了一種統一的介面。  -->
        <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>${commons.cli.version}</version>
        </dependency>
        <!-- 在實際的應用中,我們經常需要對字串進行編解碼,Apache Commons家族中的Commons Codec
             就提供了一些公共的編解碼實現,比如Base64, Hex, MD5,Phonetic and URLs等等。 -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>${commons.codec.version}</version>
        </dependency>
        <!-- 檔案上傳 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>${commons.fileupload.version}</version>
        </dependency>
        <!-- 檔案操作工具 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons.io.version}</version>
        </dependency>
        <!-- 常用工具 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>${commons.lang3.version}</version>
        </dependency>
        <!-- 集合工具 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>${commons.collections4.version}</version>
        </dependency>

        <!--  引入json相關3個jar包,處理json請求  -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <!-- *************以上是JSON依賴(end)****************** -->

        <!-- *************以下是日誌****************** -->
        <!--logback-classic中就包含了logback-core、slf4j-apiJAR包。作用就是列印日誌提供方法-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.classic.version}</version>
        </dependency>
        <!-- logback-ext-spring是Spring提供的,它用於提供listener監聽器。 -->
        <dependency>
            <groupId>org.logback-extensions</groupId>
            <artifactId>logback-ext-spring</artifactId>
            <version>${logback.ext.spring.version}</version>
        </dependency>
        <!-- jcl-over-slf4j用來把Spring中大量使用common-logging替換成slf4j。只有有個這個包,才能打印出
        Spring框架本身的資訊資料。 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${jcl.over.slf4j.version}</version>
        </dependency>

        <!-- *************以上是日誌****************** -->
    </dependencies>

</project>