淘淘商城系列——使用maven构建工程

开发工具和环境

这里,我统一规范一下淘淘商城的开发工具和环境,如下:

  • Eclipse 4.5.2(Mars2),其自带maven插件,需要手工安装svn插件,但我提供的这个eclipse,svn插件已经搭好了
  • Maven-3.3.9(开发工具自带)
  • Tomcat-7.0.75(Maven Tomcat Plugin)
  • JDK 1.7
  • MySQL 5.7.17
  • Nginx 1.8.0
  • Redis 3.0.0
  • Win10 操作系统
  • SVN(版本管理工具)

工程搭建

使用maven的好处

  1. 项目构建。Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本。
  2. 依赖管理。除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。 
    • 管理Jar包的依赖。
    • 管理工程之间的依赖关系,即可使用Maven依赖其他的工程。

后台工程搭建分析

Maven常见的打包方式有:

  • jar 
    jar工程,很显然就是pom工程的子工程,由pom工程来管理。
  • war 
    war工程是一个web工程,是可以直接放到tomcat下运行的工程。
  • pom 
    pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理,它是一个聚合工程。其实说白了它只有一个pom.xml文件,一般是作为父工程出现的,只是定义了一些依赖、插件、还有一些版本号等等。

后台管理系统的工程使用Maven构建工具创建,工程之间的依赖关系如下: 

  • taotao-parent:父工程,其打包方式是pom,主要管理jar包的版本号。项目中的所有工程都应该继承父工程。

    • taotao-common:存放一些通用的工具类、通用的pojo。其打包方式为jar,被其他的工程所依赖。
    • taotao-manager:服务层工程,又称之为聚合工程或pom工程。
      • taotao-manager-pojo:这是一个独立的模块,其打包方式是jar。
      • taotao-manager-dao:这是一个独立的模块,其打包方式是jar。
      • taotao-manager-interface:打包方式是jar。
      • taotao-manager-service:打包方式是war,主要为了方便部署。
    • taotao-manager-web:表现层工程,打包方式是war。

搭建taotao-parent工程

在这里我使用maven来搭建taotao-parent这个父工程,taotao-parent本身就是一个父工程,所以它不需要继承其他的工程,我们主要在父工程中定义依赖jar包的版本和Maven插件的版本信息。注意,此处我使用的maven是apache-maven-3.3.9这个版本。 
首先点击【File】菜单选项,并在下拉框中选中【New】,接着点击【Other】,如下: 

在输入框中输入maven,并选择Maven Project,如下: 

点击【Next】,勾选Create a simple project复选框,如果你不打上这个勾,它会让你选择一个骨架,但骨架里面没有pom这个模板的。 

点击【Next】,出现如下对话框,在该对话框中定义maven工程的坐标,如下: 

最后点击【Finish】,可发现新创建的taotao-parent工程为: 

可以看出这个pom文件内容很简单,就这么几个——当前这个工程的坐标以及其打包方式。现在我们需要在这个父工程里面管理jar包的版本号,怎样管理jar包的版本号呢?那就需要在pom文件中进行配置了。下面我提供一个比较全面的pom.xml文件,文件内容可能有点多,初次接触这种商城大项目的人是不可能一蹰而就写完的,肯定是在编写项目的过程中,需要用到哪个jar包,就在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>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <!-- 集中定义依赖版本号 -->
    <properties>
        <junit.version>4.12</junit.version>
        <spring.version>4.2.4.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <mybatis.spring.version>1.2.2</mybatis.spring.version>
        <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
        <mysql.version>5.1.32</mysql.version>
        <slf4j.version>1.6.4</slf4j.version>
        <jackson.version>2.4.2</jackson.version>
        <druid.version>1.0.9</druid.version>
        <httpclient.version>4.3.5</httpclient.version>
        <jstl.version>1.2</jstl.version>
        <servlet-api.version>2.5</servlet-api.version>
        <jsp-api.version>2.0</jsp-api.version>
        <joda-time.version>2.5</joda-time.version>
        <commons-lang3.version>3.3.2</commons-lang3.version>
        <commons-io.version>1.3.2</commons-io.version>
        <commons-net.version>3.3</commons-net.version>
        <pagehelper.version>3.4.2-fix</pagehelper.version>
        <jsqlparser.version>0.9.1</jsqlparser.version>
        <commons-fileupload.version>1.3.1</commons-fileupload.version>
        <jedis.version>2.7.2</jedis.version>
        <solrj.version>4.10.3</solrj.version>
        <dubbo.version>2.5.3</dubbo.version>
        <zookeeper.version>3.4.7</zookeeper.version>
        <zkclient.version>0.1</zkclient.version>
        <activemq.version>5.11.2</activemq.version>
        <freemarker.version>2.3.23</freemarker.version>
        <quartz.version>2.2.2</quartz.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!-- 时间操作组件 -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${joda-time.version}</version>
            </dependency>
            <!-- Apache工具组件 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>${commons-net.version}</version>
            </dependency>
            <!-- Jackson Json处理工具包 -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <!-- httpclient -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <!-- quartz任务调度框架 -->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>${quartz.version}</version>
            </dependency>
            <!-- 单元测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <!-- 日志处理 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- Mybatis的分页插件 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis.spring.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.miemiedev</groupId>
                <artifactId>mybatis-paginator</artifactId>
                <version>${mybatis.paginator.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>
            <!-- MySql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!-- 连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jms</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- JSP相关 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>${jsp-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- 文件上传组件 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons-fileupload.version}</version>
            </dependency>
            <!-- Redis客户端 -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${jedis.version}</version>
            </dependency>
            <!-- solr客户端 -->
            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>${solrj.version}</version>
            </dependency>
            <!-- dubbo相关 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>${zkclient.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-all</artifactId>
                <version>${activemq.version}</version>
            </dependency>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 资源文件拷贝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

大家一看是不是傻眼了,我靠!这么多,大家心都凉了一截,这可能是大家对使用maven构建工程感到陌生,说实话,我本人也是第一次使用maven来构建工程,我也很难受,不抱怨了,下面对一些我感到特别陌生的点讲解一下。

  • <dependencyManagement>...</dependencyManagement>:依赖管理,管理的就是jar包的版本号,它里面并不是真正的依赖,如果你继承com.taotao这个工程,会发现什么jar包也没有依赖过来。工程中用到的jar包都应该在这里有定义。
  • httpclient:也是一个工具包,相当于使用Java API模拟浏览器向服务器发送请求,然后再回送响应。浏览器有的功能,httpclient也有。
  • <scope>provided</scope>:除了打包时不打包,别的时候都会全程参与,编译、测试、运行时候都会用到,部署时也不会用它,因为我们要把这个war包部署到tomcat里面去,tomcat里面都会提供servlet和jsp的API,如果把它也打包到war包里面,可能会有冲突。
  • <pluginManagement>...</pluginManagement>:pluginManagemen也是管理插件的版本,这里面并不是对插件实际的依赖,而只是管理插件的版本。

搭建taotao-common工程

taotao-common工程主要存放通用的工具类和pojo,它本身是一个子工程,所以它需要继承父工程,并且它的打包方式是jar。注意,taotao-common工程并不是一个独立的模块。 
首先点击【File】菜单选项,并在下拉框中选中【New】,接着点击【Other】,如下: 

在输入框中输入maven,并选择Maven Project,如下: 

点击【Next】,勾选Create a simple project复选框,如果你不打上这个勾,它会让你选择一个骨架,但骨架里面没有pom这个模板的。 

点击【Next】,出现如下对话框,在该对话框中定义maven工程的坐标,如下: 

最后点击【Finish】,可发现新创建的taotao-common工程为: 

可以看到新建的taotao-common工程的jre的版本默认便是jdk1.7,这是由于我们在taotao-parent父工程中定义了JDK的编译版本,taotao-parent父工程关于JDK编译版本的依赖配置如下:

<!-- java编译插件 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

从taotao-common工程的pom.xml文件中可以看出:

<parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

即代表父工程,我们还可以看见<groupId>com.taotao</groupId><version>0.0.1-SNAPSHOT</version>下面有黄色的下划线,这意味着可以删掉它们,因为我们在父工程里面已经定义了组织名和版本号了,当然了你不删除掉也是没关系的。 
接下来,我们来给taotao-common工程的pom.xml文件添加依赖,common顾名思义,就是大家都会调用的工具类,就像公共组件。我们从taotao-parent工程中复制公共组件的依赖到taotao-common的pom.xml文件当中,taotao-common的pom.xml文件的内容如下,由于taotao-parent工程里面已经统一管理版本号了,因此我们在taotao-common工程中就不用再定义组件的版本了。保存后,maven会自动下载相关依赖。

<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.taotao</groupId>
        <artifactId>taotao-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!-- 依赖工具类的jar包 -->
    <dependencies>
        <!-- 时间操作组件 -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
        <!-- Apache工具组件 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
        </dependency>
        <!-- Jackson Json处理工具包 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <!-- httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <!-- quartz任务调度框架 -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
        </dependency>
        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 日志处理 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>
    </dependencies>
</project>
  • 1

搭建taotao-manager工程

现在开始我们搭建taotao-manager工程,它是后台的服务层工程。这个工程里面需要很多模块,我们须把这些模块单独拆分,所以它应该是一个聚合工程。 
首先点击【File】菜单选项,并在下拉框中选中【New】,接着点击【Other】,如下: 

在输入框中输入maven,并选择Maven Project,如下: 

点击【Next】,勾选Create a simple project复选框,如果你不打上这个勾,它会让你选择一个骨架,但骨架里面没有pom这个模板的。 

点击【Next】,出现如下对话框,在该对话框中定义maven工程的坐标,如下: 

最后点击【Finish】,可发现新创建的taotao-manager工程为: 

由于taotao-manager工程有可能会依赖taotao-common工程,所以我们应在taotao-manager的pom.xml文件中添加对taotao-common的依赖,如下:

<dependencies>
    <dependency>
        <groupId>com.taotao</groupId>
        <artifactId>taotao-common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>
  • 1

截图为: 

下面我们在来添加属于该聚合工程的四个模块。

搭建taotao-manager-pojo模块

首先搭建taotao-manager-pojo模块,在taotao-manager工程上右键,然后在右键菜单中选择【New】,接着点击【Other】。 

在打开的对话框中选择“Maven Module”,然后点击【Next】。 

勾选”Create a simple project(skip archetype selection)”前面的复选框,在Module Name中输入:taotao-manager-pojo,然后点击【Next】。 

不用做任何修改,然后点击【Finish】。 

这样就新建了一个taotao-manager-pojo的模块,试想一下taotao-manager-pojo这个模块是不需要依赖其他jar包的,所以pom.xml文件不用做任何修改。细心的同学可能已经注意到了,在taotao-manager下面的taotao-manager-pojo这个工程与taotao-manager同级的taotao-manager-pojo工程的工程名一样,其实同名的工程是同一个工程,你删掉其中一个,另一个也会跟着消失。这里不做演示。 

下面再来新建taotao-manager-dao这个模块。

搭建taotao-manager-dao模块

搭建taotao-manager-dao模块的步骤同上面taotao-manager-pojo一样,只不过是模块名字改为taotao-manager-dao而已。注意,该模块的打包方式是jar。 
建完taotao-manager-dao模块之后,打开其pom.xml文件,并在其中添加对taotao-manager-pojo的依赖,另外由于dao层需要Mybatis、MySQL、分页、连接池的包,因此我们在pom.xml文件中添加对这些jar包的依赖。这样,taotao-manager-dao模块的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.taotao</groupId>
        <artifactId>taotao-manager</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-dao</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-pojo</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.miemiedev</groupId>
            <artifactId>mybatis-paginator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
        </dependency>
        <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
    </dependencies>
</project>
  • 1

搭建taotao-manager-interface模块

现在我们来创建taotao-manager-interface模块,创建步骤跟taotao-manager-pojo模块的搭建是一样的,只是模块名字不同而已。注意,该模块的打包方式是jar。创建完之后,我们修改下它的pom.xml文件,因为接口模块是要用到pojo模块的,如下图所示: 

上图的依赖如下:

<dependencies>
    <dependency>
        <groupId>com.taotao</groupId>
        <artifactId>taotao-manager-pojo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

搭建taotao-manager-service模块

最后,我们来搭建taotao-manager-service模块,该模块是个war工程,既然taotao-manager工程是个聚合工程,故可以聚合无数个模块,但是总归要靠一个war工程来将所有的模块聚合起来,因此我们才需要新建一个war工程,将来用于部署使用。步骤如下: 
在taotao-manager工程上右键,然后在右键菜单中选择【New】,接着点击【Other】。 

在打开的对话框中选择“Maven Module”,然后点击【Next】。 

勾选”Create a simple project(skip archetype selection)”前面的复选框,在Module Name中输入:taotao-manager-service,然后点击【Next】。 

在下图中,我们在Packaging一栏选择”war”,然后点击【Finish】。 

搭建完taotao-manager-service工程之后,我们会发现这个工程会报错,如下图所示。出现这个问题是因为我们的工程缺少web.xml文件造成的。 

下面我们来创建这个web.xml文件,如下图所示。 

为了方便大家复制,这里把web.xml文件的内容放到这里。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    id="WebApp_ID"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>taotao-manager</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>  

</web-app>  
  • 1

添加完web.xml文件之后,工程便不报错了,现在我们开始添加service的依赖。我们知道,服务层肯定要调用dao层,因此我们需要依赖taotao-manager-dao,除此之外,服务层还要用spring,因此需要添加spring的包。taotao-manager-service的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.taotao</groupId>
        <artifactId>taotao-manager</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-service</artifactId>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-dao</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
    </dependencies>
</project>
  • 1

注意,taotao-manager-service这个工程除了要依赖taotao-manager-dao之外,还要依赖taotao-manager-interface,很多小伙伴们都忘记了这一点。

搭建taotao-manager-web工程

搭建完了taotao-manager服务层工程,下面我们来搭建taotao-manager-web表现层工程。 
首先点击【File】菜单选项,并在下拉框中选中【New】,接着点击【Other】,如下: 

在输入框中输入maven,并选择Maven Project,如下: 

点击【Next】,勾选Create a simple project复选框,如果你不打上这个勾,它会让你选择一个骨架,但骨架里面没有pom这个模板的。 

点击【Next】,出现如下对话框,在该对话框中定义maven工程的坐标,如下: 

最后点击【Finish】,taotao-manager-web工程就创建好了,但是新建的web工程由于缺少web.xml文件而报错,解决方法是在webapp目录下新建一个WEB-INF目录,并在该目录下新建web.xml文件,如下: 

为了方便大家复制,这里把web.xml文件的内容放到这里。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    id="WebApp_ID"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>taotao-manager</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>  

</web-app>  
  • 1
  • 2

下面我们来配置pom.xml文件的依赖,表现层需要spring相关组件,并且还需要jsp,所以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.taotao</groupId>
        <artifactId>taotao-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager-web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
        <!-- JSP相关 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

到这里,我们终于把所有的maven工程都搭建完了,真是不简单呐!这一刻特别值得纪念!!!

时间: 2024-08-09 12:05:36

淘淘商城系列——使用maven构建工程的相关文章

淘淘商城系列——使用maven构建工程时出现的错误

我觉得maven就他妈是一个傻逼,反正我是对它无语了.昨天刚刚使用maven构建完工程,都没有出现任何问题,而且运行也是没任何问题的,妈蛋,今天把Eclipse一打开,就出现了错误,截图如下: 我他妈开始怀疑人生了,而且比较奇怪的是虽然出现以上错误,但是使用maven tomcat插件启动taotao-manager-web工程没任何问题,截图如下: 你说这他妈奇不奇怪!我想说脏话,我想日天!虽然我抱怨了,但是经过我的深思熟虑,解决方法就出来了,我们应该update一下有红叉的maven工程,步

淘淘商城系列——使用maven tomcat插件启动web工程

上文我们一起学习了怎样搭建maven工程,这篇文章我就来教大家一起学习怎样用tomcat插件来启动web工程. 我们把服务层和表现层的工程都创建好了,目前来说,其实真正能运行的就2个,一个是表现层工程——taotao-manager-web,一个服务层工程——taotao-manager.本文先来看表现层工程,它可以独立运行,它应该怎么运行呢? 为何要用maven tomcat插件来启动web工程? 如果要运行表现层工程,那么应该在其pom.xml文件中配置一个maven的tomcat插件,而不

01淘淘商城项目:项目Maven工程搭建

最近在学习淘淘商城项目的搭建,使用maven做管理 后台管理系统工程搭建: 使用maven的好处: 1.依赖管理.jar包.工程之间依赖 2.项目构建:实现项目的一步构建 3.工程聚合.继承.依赖 maven工程分为三种类型: pom工程:用在父级工程,聚合工程中 war包工程:主要用作网站 jar包工程:就是当作jar使用的,可以用来打包 先给出总的项目结构,然后再解释是如何实现这些结构的 解释如下: 1.taotao-parent taotao-parent公司级别的maven工程.主要功能

淘淘商城maven工程的创建和svn的上传实现

后台管理系统工程结构 maven管理的好处 1.项目构建.Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本. 2.依赖管理.除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载. A)管理依赖的jar包 B)管理工程之间的依赖关系. Maven本地仓库 在当前系统用户的文件夹下.例如当前用户是Administrator那么本地仓库就是在 C:\Users\

(转) 淘淘商城系列——使用FastDFS-Client客户端进行上传图片的测试

http://blog.csdn.net/yerenyuan_pku/article/details/72804018 不久之前,我们实现了商品的类目选择这个功能,但这只是万里长征的第一步,我们还有很多事情需要做,例如怎样实现图片上传这个功能.本文就来教大家如何实现图片上传. 图片上传分析 我们知道,对于传统项目来说,所有的模块都在一个项目中开发,包括所有静态资源文件比如图片等,都存储在这一个tomcat服务器上,如下图所示. 如果访问量小的话,这样做问题倒不大,但是对于互联网项目来说,用户访问

(转)淘淘商城系列——商品搜索功能测试

http://blog.csdn.net/yerenyuan_pku/article/details/72941506 到这里,我相信大家也是不容易,我自己也算是很不容易写到这里,希望自己能一直写下去.之前我们就差不多把商品搜索功能实现了,本文我们来一起测试下该搜索功能. 首先我们要保证zookeeper.redis.image.solr服务都开启.接着我们把taotao-common工程重新打包到本地maven仓库,由于taotao-search-interface工程新添加了一个接口,所以我

(转)淘淘商城系列——实现图片上传功能

http://blog.csdn.net/yerenyuan_pku/article/details/72808000 上文我们使用FastDFS-Client进行了简单的文件上传操作测试,淘淘商城项目中添加商品时上传图片的功能还没实现,如下图所示.本文将花大量笔墨来教大家如何实现图片上传这个功能. 我们来看下item-add.jsp页面,可以看到上传图片触发的方法是通过叫做picFileUpload的class来处理的,在<a>标签的下方是一个隐藏域,是用来接收图片上传到图片服务器的回显地址

淘淘商城01——工程介绍及搭建

一.淘淘商城介绍 淘淘网上商城是一个综合性的B2C(商家到用户)平台,类似京东商城.天猫商城.会员可以在商城浏览商品.下订单,以及参加各种活动. 管理员.运营可以在平台后台管理系统中管理商品.订单等. 客服可以在后台管理系统中处理用户的询问以及投诉. 1.1 系统功能图 1.2  系统功能介绍 后台管理系统:管理商品.订单.类目.商品规格属性.用户管理以及内容发布等功能. 前台系统:用户可以在前台系统中进行注册.登录.浏览商品.首页.下单等操作. 会员系统:用户可以在该系统中查询已下的订单.收藏

(转) 淘淘商城系列——Redis的安装

http://blog.csdn.net/yerenyuan_pku/article/details/72849612 通过上文的学习,我相信大家已经将首页的轮播图展示出来了,接下来我们将进入一个新的领域的学习,希望大家能振作精神,保持乐观向上的心态.本文我会教大家如何在Linux系统上安装Redis. 一般来说,如果我们是做一个互联网项目,通常都要在工程中添加缓存,之所以这样做,是因为在互联网项目中查询功能是非常频繁的,如果每次查询都调用数据库的话,会给数据库造成很大的压力,因此需要在用户和数