以前的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>