框架 day73 涛涛商城项目工程搭建(maven)

1.           电商行业



1.1.    电商行业技术特点

Ø                      技术新

Ø                      技术范围广

Ø                      分布式

Ø                      高并发、集群、负载均衡、高可用

Ø                      海量数据

Ø                      业务复杂

Ø                      系统安全

 

 

2.           淘淘商城



2.1.    淘淘商城简介

淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。

管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。

客服可以在后台管理系统中处理用户的询问以及投诉。

2.2.    功能架构

2.2.1.      系统功能图

框架 day73 涛涛商城项目工程搭建(maven)_第1张图片

2.2.2.      功能描述

后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。

前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。

会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。

订单系统:提供下单、查询订单、修改订单状态、定时处理订单。

搜索系统:提供商品的搜索功能。

单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

2.3.    技术架构

2.3.1.      传统架构

框架 day73 涛涛商城项目工程搭建(maven)_第2张图片

思考:有什么问题?

1、  模块之间耦合度太高,其中一个升级其他都得升级

2、  开发困难,各个团队开发最后都要整合一起

3、  系统的扩展性差

4、不能灵活的进行分布式部署。

2.3.2.      分布式系统架构

框架 day73 涛涛商城项目工程搭建(maven)_第3张图片

分布式架构:

把系统按照模块拆分成多个子系统。

优点:

1、把模块拆分,使用接口通信,降低模块之间的耦合度。

2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。

3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。

4、可以灵活的进行分布式部署。

 

缺点:

系统之间交互需要使用远程通信,接口开发增加工作量。

 

2.3.3.      技术选型(主要技术)

l      Spring、SpringMVC、Mybatis

l      JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV

l      Redis(缓存服务器)

l      Solr(搜索)

l      httpclient(调用系统服务)

l      Mysql

l      Nginx(web服务器)

2.4.    开发工具和环境

Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。

Maven 3.3.3(开发工具自带)

Tomcat 7.0.53(Maven Tomcat Plugin)

JDK 1.7

Mysql 5.6

Nginx 1.8.0

Redis 3.0.0

Win7 操作系统

SVN(版本管理)

2.5.    人员配置

产品经理:3人,确定需求以及给出产品原型图。

项目经理:1人,项目管理。

前端团队:5人,根据产品经理给出的原型制作静态页面。

后端团队:20人,实现产品功能。

测试团队:5人,测试所有的功能。

运维团队:3人,项目的发布以及维护。

 

3.           后台管理系统工程结构



3.1.    maven管理的好处

1、项目构建。Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本。

2、依赖管理。除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。

A)管理依赖的jar包

B)管理工程之间的依赖关系。

 

3.2.    Maven本地仓库

在当前系统用户的文件夹下。例如当前用户是Administrator那么本地仓库就是在

C:\Users\Administrator\.m2目录下。

只需要用提供的.m2覆盖本地的就可以。

 

Maven插件使用eclipse mars自带maven插件。只需要统一开发环境。

 


3.3.    依赖管理

传统工程结构:

 框架 day73 涛涛商城项目工程搭建(maven)_第4张图片

Maven管理的工程结构:

 

不使用maven:工程部署时需要手动复制jar包。完成工程构建。非常繁琐。

使用maven进行工程构建:

使用maven可以实现一步构建。

 

后台管理系统的工程结构后台管理系统工程结构:

框架 day73 涛涛商城项目工程搭建(maven)_第5张图片

taotao-parent -- 管理依赖jar包的版本,全局,公司级别

|--taotao-common  ---通用组件、工具类

|--taotao-manage  --后台系统

        |--com.taotao.manage.web

        |--com.taotao.manage.service

        |--com.taotao.manage.mapper

        |--com.taotao.manage.pojo

 

 

3.4.    创建taotao-parent

3.4.1.      创建maven工程

框架 day73 涛涛商城项目工程搭建(maven)_第6张图片

3.4.2.      修改pom文件

<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.0modelVersion>

      <groupId>com.taotaogroupId>

      <artifactId>taotao-parentartifactId>

      <version>0.0.1-SNAPSHOTversion>

      <packaging>pompackaging>

     

      <properties>

           <junit.version>4.12junit.version>

           <spring.version>4.1.3.RELEASEspring.version>

           <mybatis.version>3.2.8mybatis.version>

           <mybatis.spring.version>1.2.2mybatis.spring.version>

           <mybatis.paginator.version>1.2.15mybatis.paginator.version>

           <mysql.version>5.1.32mysql.version>

           <slf4j.version>1.6.4slf4j.version>

           <jackson.version>2.4.2jackson.version>

           <druid.version>1.0.9druid.version>

           <httpclient.version>4.3.5httpclient.version>

           <jstl.version>1.2jstl.version>

           <servlet-api.version>2.5servlet-api.version>

           <jsp-api.version>2.0jsp-api.version>

           <joda-time.version>2.5joda-time.version>

           <commons-lang3.version>3.3.2commons-lang3.version>

           <commons-io.version>1.3.2commons-io.version>

           <commons-net.version>3.3commons-net.version>

           <pagehelper.version>3.4.2-fixpagehelper.version>

           <jsqlparser.version>0.9.1jsqlparser.version>

           <commons-fileupload.version>1.3.1commons-fileupload.version>

           <jedis.version>2.7.2jedis.version>

           <solrj.version>4.10.3solrj.version>

      properties>

      <dependencyManagement>

           <dependencies>

                

                 <dependency>

                       <groupId>joda-timegroupId>

                      <artifactId>joda-timeartifactId>

                      <version>${joda-time.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>org.apache.commonsgroupId>

                      <artifactId>commons-lang3artifactId>

                      <version>${commons-lang3.version}version>

                 dependency>

                 <dependency>

                      <groupId>org.apache.commonsgroupId>

                      <artifactId>commons-ioartifactId>

                      <version>${commons-io.version}version>

                 dependency>

                 <dependency>

                      <groupId>commons-netgroupId>

                      <artifactId>commons-netartifactId>

                      <version>${commons-net.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>com.fasterxml.jackson.coregroupId>

                      <artifactId>jackson-databindartifactId>

                      <version>${jackson.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>org.apache.httpcomponentsgroupId>

                      <artifactId>httpclientartifactId>

                      <version>${httpclient.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>junitgroupId>

                      <artifactId>junitartifactId>

                      <version>${junit.version}version>

                      <scope>testscope>

                 dependency>

                

                 <dependency>

                      <groupId>org.slf4jgroupId>

                      <artifactId>slf4j-log4j12artifactId>

                      <version>${slf4j.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>org.mybatisgroupId>

                      <artifactId>mybatisartifactId>

                      <version>${mybatis.version}version>

                 dependency>

                 <dependency>

                      <groupId>org.mybatisgroupId>

                      <artifactId>mybatis-springartifactId>

                      <version>${mybatis.spring.version}version>

                 dependency>

                 <dependency>

                      <groupId>com.github.miemiedevgroupId>

                      <artifactId>mybatis-paginatorartifactId>

                      <version>${mybatis.paginator.version}version>

                 dependency>

                 <dependency>

                      <groupId>com.github.pagehelpergroupId>

                      <artifactId>pagehelperartifactId>

                      <version>${pagehelper.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>mysqlgroupId>

                      <artifactId>mysql-connector-javaartifactId>

                      <version>${mysql.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>com.alibabagroupId>

                      <artifactId>druidartifactId>

                      <version>${druid.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>org.springframeworkgroupId>

                      <artifactId>spring-contextartifactId>

                      <version>${spring.version}version>

                 dependency>

                 <dependency>

                      <groupId>org.springframeworkgroupId>

                      <artifactId>spring-beansartifactId>

                      <version>${spring.version}version>

                 dependency>

                 <dependency>

                      <groupId>org.springframeworkgroupId>

                      <artifactId>spring-webmvcartifactId>

                      <version>${spring.version}version>

                 dependency>

                 <dependency>

                      <groupId>org.springframeworkgroupId>

                      <artifactId>spring-jdbcartifactId>

                      <version>${spring.version}version>

                 dependency>

                 <dependency>

                      <groupId>org.springframeworkgroupId>

                      <artifactId>spring-aspectsartifactId>

                      <version>${spring.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>jstlgroupId>

                      <artifactId>jstlartifactId>

                      <version>${jstl.version}version>

                 dependency>

                 <dependency>

                      <groupId>javax.servletgroupId>

                      <artifactId>servlet-apiartifactId>

                      <version>${servlet-api.version}version>

                      <scope>providedscope>

                 dependency>

                 <dependency>

                      <groupId>javax.servletgroupId>

                      <artifactId>jsp-apiartifactId>

                      <version>${jsp-api.version}version>

                      <scope>providedscope>

                 dependency>

                

                 <dependency>

                      <groupId>commons-fileuploadgroupId>

                      <artifactId>commons-fileuploadartifactId>

                      <version>${commons-fileupload.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>redis.clientsgroupId>

                      <artifactId>jedisartifactId>

                      <version>${jedis.version}version>

                 dependency>

                

                 <dependency>

                      <groupId>org.apache.solrgroupId>

                      <artifactId>solr-solrjartifactId>

                      <version>${solrj.version}version>

                 dependency>

           dependencies>

      dependencyManagement>

 

      <build>

           <finalName>${project.artifactId}finalName>

           <plugins>

                

                 <plugin>

                      <groupId>org.apache.maven.pluginsgroupId>

                      <artifactId>maven-resources-pluginartifactId>

                      <version>2.7version>

                      <configuration>

                            <encoding>UTF-8encoding>

                      configuration>

                 plugin>

                

                 <plugin>

                      <groupId>org.apache.maven.pluginsgroupId>

                      <artifactId>maven-compiler-pluginartifactId>

                      <version>3.2version>

                      <configuration>

                            <source>1.7source>

                            <target>1.7target>

                            <encoding>UTF-8encoding>

                      configuration>

                 plugin>

           plugins>

           <pluginManagement>

                 <plugins>

                     

                      <plugin>

                            <groupId>org.apache.tomcat.mavengroupId>

                            <artifactId>tomcat7-maven-pluginartifactId>

                            <version>2.2version>

                      plugin>

                 plugins>

           pluginManagement>

      build>

project>

 

3.4.3.      将taotao-parent安装到本地仓库。

框架 day73 涛涛商城项目工程搭建(maven)_第7张图片



3.5.    taotao-common

3.5.1.      创建工程

框架 day73 涛涛商城项目工程搭建(maven)_第8张图片

3.5.2.      修改pom文件

修改taotao-common工程的pom文件,在文件中添加对taotao-parent的继承。



	4.0.0
	
		com.taotao
		taotao-parent
		0.0.1-SNAPSHOT
	
	com.taotao
	taotao-common
	0.0.1-SNAPSHOT
	
	
		
		
			joda-time
			joda-time
		
		
		
			org.apache.commons
			commons-lang3
		
		
			org.apache.commons
			commons-io
		
		
			commons-net
			commons-net
		
		
		
			com.fasterxml.jackson.core
			jackson-databind
		
		
		
			org.apache.httpcomponents
			httpclient
		
		
		
			junit
			junit
			test
		
		
		
			org.slf4j
			slf4j-log4j12
		
	

 

3.5.3.      更新工程

工程点击右键→maven→update Project Configuration



3.6.    taotao-manage

3.6.1.      创建taotao-manager

框架 day73 涛涛商城项目工程搭建(maven)_第9张图片 

修改pom文件:

1.1.1.1  


	4.0.0
	
		com.taotao
		taotao-parent
		0.0.1-SNAPSHOT
	
	com.taotao
	taotao-manager
	0.0.1-SNAPSHOT
	pom
	
	
		
			com.taotao
			taotao-common
			0.0.1-SNAPSHOT
		
	

  

3.6.2.      taotao-manage-pojo

 框架 day73 涛涛商城项目工程搭建(maven)_第10张图片

框架 day73 涛涛商城项目工程搭建(maven)_第11张图片

 框架 day73 涛涛商城项目工程搭建(maven)_第12张图片


 pom文件

不需要修改,taotao-manager-pojo模块不依赖任何jar


3.6.3.      Taotao-manager-mapper

 pom 文件


	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-mapper
	
	
		
			com.taotao
			taotao-manager-pojo
			0.0.1-SNAPSHOT
		
		
		
			org.mybatis
			mybatis
		
		
			org.mybatis
			mybatis-spring
		
		
			com.github.miemiedev
			mybatis-paginator
		
		
			com.github.pagehelper
			pagehelper
		
		
		
			mysql
			mysql-connector-java
		
		
		
			com.alibaba
			druid
		
	


3.6.4.      Taotao-manager-service

 pom文件


	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-service
	
	
		
			com.taotao
			taotao-manager-mapper
			0.0.1-SNAPSHOT
		
		
		
			org.springframework
			spring-context
		
		
			org.springframework
			spring-beans
		
		
			org.springframework
			spring-webmvc
		
		
			org.springframework
			spring-jdbc
		
		
			org.springframework
			spring-aspects
		
	


3.6.5.      Taotao-manager-web

 框架 day73 涛涛商城项目工程搭建(maven)_第13张图片

 pom


	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-web
	war
	
	
		
			com.taotao
			taotao-manager-service
			0.0.1-SNAPSHOT
		
		
		
			jstl
			jstl
		
		
			javax.servlet
			servlet-api
			provided
		
		
			javax.servlet
			jsp-api
			provided
		
		
		
			commons-fileupload
			commons-fileupload
		
	



1.  配置工程:

要运行工程,需要运行聚合工程也就是taotao-manager

框架 day73 涛涛商城项目工程搭建(maven)_第14张图片

 

 

2.                                                                                 Web.xml

xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

    id="taotao" version="2.5">

    <display-name>taotao-managerdisplay-name>

    <welcome-file-list>

       <welcome-file>index.htmlwelcome-file>

       <welcome-file>index.htmwelcome-file>

       <welcome-file>index.jspwelcome-file>

       <welcome-file>default.htmlwelcome-file>

       <welcome-file>default.htmwelcome-file>

       <welcome-file>default.jspwelcome-file>

    welcome-file-list>

 

web-app>

 

3.6.6.      配置tomcat插件

运行web工程需要添加一个tomcat插件。插件必须添加到taotao-manager工程中。因为taotao-manager是聚合工程。在运行时需要把子工程聚合到一起才能运行。

 

<build>

           <plugins>

                

                 <plugin>

                      <groupId>org.apache.tomcat.mavengroupId>

                      <artifactId>tomcat7-maven-pluginartifactId>

                      <version>2.2version>

                      <configuration>

                            <port>8080port>

                            <path>/path>

                      configuration>

                 plugin>

           plugins>

      build>

启动tomcat命令:

clean tomcat7:run

 框架 day73 涛涛商城项目工程搭建(maven)_第15张图片

3.6.7.      taotao-manage子模块依赖关系

框架 day73 涛涛商城项目工程搭建(maven)_第16张图片

依赖关系:

web → service

service → mapper

mapper → pojo

 

 

4.           提交代码到SVN



4.1.    提交代码

 框架 day73 涛涛商城项目工程搭建(maven)_第17张图片

 

注意:提交到SVNMaven项目,只提交srcpom.xml

4.2.    从SVN检出项目

1、  从trunk检出项目,并且重命名项目名称

2、  转化为maven项目

框架 day73 涛涛商城项目工程搭建(maven)_第18张图片




3、  聚合项目中子项目需要从父工程中【导入】,选择【已经存在的maven项目】,不能从SVN再次检出子项目

框架 day73 涛涛商城项目工程搭建(maven)_第19张图片


 

 

 框架 day73 涛涛商城项目工程搭建(maven)_第20张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(笔记)